{
	"id": "fc7922a1-13a7-4d66-ae12-a5a177a54687",
	"created_at": "2026-04-06T00:17:50.8508Z",
	"updated_at": "2026-04-10T03:36:13.942814Z",
	"deleted_at": null,
	"sha1_hash": "82f6ebb2ab83ac0bf366245b944fd5e2e5d4c313",
	"title": "Features and APIs Overview",
	"llm_title": "",
	"authors": "",
	"file_creation_date": "0001-01-01T00:00:00Z",
	"file_modification_date": "0001-01-01T00:00:00Z",
	"file_size": 1082386,
	"plain_text": "Features and APIs Overview\r\nArchived: 2026-04-05 14:58:50 UTC\r\nAndroid 12 introduces great new features and APIs for developers. The sections below help you learn about\r\nfeatures for your apps and get started with the related APIs.\r\nFor a detailed list of new, modified, and removed APIs, read the API diff report. For details on new APIs visit the\r\nAndroid API reference — new APIs are highlighted for visibility. Also, to learn about areas where platform\r\nchanges may affect your apps, be sure to check out Android 12 behavior changes for apps that target Android 12\r\nand for all apps.\r\nUser experience\r\nMaterial You\r\nAndroid 12 introduces a new design language called Material You, helping you to build more personalized,\r\nbeautiful apps. To bring all of the latest Material Design 3 updates into your apps, try an alpha version of Material\r\nDesign Components.\r\nWidgets improvements\r\nAndroid 12 revamps the existing Widgets API to improve the user and developer experience in the platform and\r\nlaunchers. We've created a guide to help you ensure your widget is compatible with Android 12 and to refresh it\r\nwith new features.\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 1 of 14\n\nSee Android 12 widgets improvements for more information.\r\nRich content insertion\r\nAndroid 12 introduces a new unified API that lets your app receive rich content from any available source:\r\nclipboard, keyboard, or drag and drop.\r\nFor more information, see Receive rich content.\r\nApp splash screens API\r\nAndroid 12 introduces a new app launch animation for all apps that includes an into-app motion from the point of\r\nlaunch, a splash screen showing the app icon, and a transition to the app itself. See the splash screens developer\r\nguide for more details.\r\nRounded corner APIs\r\nAndroid 12 introduces RoundedCorner and WindowInsets.getRoundedCorner(int position) , which provide the\r\nradius and center point for rounded corners.\r\nFor more information, see Rounded corners.\r\nRich haptic experiences\r\nAndroid 12 expands the tools for creating informative haptic feedback for UI events, immersive and delightful\r\neffects for gaming, and attentional haptics for productivity.\r\nActuator effects\r\nAndroid 12 adds expressive effects like low tick that take advantage of the broader frequency bandwidth of the\r\nlatest actuators. Game developers can now access multiple, different actuators independently in game controllers\r\nto deliver the same effect synchronously or different haptic effects on multiple actuators. For developers, we\r\nrecommend using the constants and primitives as building blocks for rich haptic effects - constants to enhance UI\r\nevents and haptic composer to sequence primitives for more complex effects. These APIs are available to try on\r\nPixel 4 devices, and we're continuing to work with our device-maker partners to bring the latest in haptics support\r\nto users across the ecosystem.\r\nAudio-coupled haptic effects\r\nAndroid 12 apps can generate haptic feedback derived from an audio session using the phone's vibrator. This\r\nprovides an opportunity for more immersive game and audio experiences. For example, haptic-enhanced ringtones\r\ncan help identify callers, or a driving game could simulate the feeling of rough terrain.\r\nSee the HapticGenerator reference documentation for more information.\r\nAppSearch\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 2 of 14\n\nAndroid 12 introduces AppSearch, a high-performance on-device search engine, as a system service. AppSearch\r\nallows applications to index structured data and search over it with built-in full-text search capabilities.\r\nFurthermore, AppSearch supports native search features, like highly-efficient indexing and retrieval, multi-language support, and relevancy ranking.\r\nAppSearch comes in two flavors: a local index for your application to use that’s compatible with older versions of\r\nAndroid, or a central index maintained for the entire system in Android 12. Using the central index, your\r\napplication can allow its data to be displayed on system UI surfaces by the system’s pre-installed intelligence\r\ncomponent. Exactly which data gets displayed on system UI surfaces is dependent on the OEM. Additionally, your\r\napplication can securely share data with other applications, to allow them to search over that data as well.\r\nLearn more about AppSearch in the developer guide, and begin using it with the AppSearch Jetpack library, which\r\nprovides a developer-friendly API surface as well as annotation processor support.\r\nGame Mode\r\nThe Game Mode API and Game Mode interventions allow you to optimize gameplay by prioritizing\r\ncharacteristics, such as performance or battery life based on users settings or game specific configurations.\r\nFor more information, see Game Mode.\r\nPicture-in-picture (PiP) recommendations and improvements\r\nAndroid 12 introduces the following improvements for PiP mode:\r\nSupport for new PiP gestures\r\nAndroid 12 now supports stashing and pinch-to-zoom gestures for the PiP window:\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 3 of 14\n\nTo stash the window, the user can drag the window to the left or right edge. To unstash the window, the\r\nuser can either tap the visible part of the stashed window or drag it out.\r\nThe user can now resize the PiP window using pinch-to-zoom.\r\nRecommended new features that support a polished PiP transition experience\r\nAndroid 12 added significant cosmetic improvements to the animated transitions between fullscreen and PiP\r\nwindows. We strongly recommend implementing all applicable changes; once you've done so, these changes\r\nautomatically scale to large screens such as foldables and tablets without any further required work.\r\nThese features are the following:\r\nA new API flag for smoother transition to PiP mode with gesture navigation\r\nUse the setAutoEnterEnabled flag to provide smoother transitions to PiP mode when swiping up to home\r\nin gesture navigation mode. Previously, Android waited for the swipe-up-to-home animation to finish\r\nbefore fading in the PiP window.\r\nSmoother animations when entering and exiting out of PiP mode\r\nThe SourceRectHint flag is now reused to implement smoother animation when entering and exiting PiP\r\nmode.\r\nA new API flag to disable seamless resizing for non-video content\r\nThe SeamlessResizeEnabled flag provides a much smoother cross-fading animation when resizing non-video content in the PiP window. Previously, resizing non-video content in a PiP window could create\r\njarring visual artifacts.\r\nNew phone call notifications allowing for ranking importance of incoming calls\r\nAndroid 12 adds the new notification style Notification.CallStyle for phone calls. Using this template lets\r\nyour app indicate the importance of active calls by displaying a prominent chip that shows the time of the call in\r\nthe status bar; the user can tap this chip to return to their call.\r\nBecause incoming and ongoing calls are the most critical to users, these notifications are given top ranking in the\r\nshade. This ranking also allows the system to potentially forward these prioritized calls to other devices.\r\nImplement the following code for all types of calls.\r\n// Create a new call with the user as caller.\r\nval incoming_caller = Person.Builder()\r\n .setName(\"Jane Doe\")\r\n .setImportant(true)\r\n .build()\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 4 of 14\n\n// Create a new call with the user as caller.\r\nPerson incoming_caller = new Person.Builder()\r\n .setName(\"Jane Doe\")\r\n .setImportant(true)\r\n .build();\r\nUse forIncomingCall() to create a call style notification for an incoming call.\r\n// Create a call style notification for an incoming call.\r\nval builder = Notification.Builder(context, CHANNEL_ID)\r\n .setContentIntent(contentIntent)\r\n .setSmallIcon(smallIcon)\r\n .setStyle(\r\n Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))\r\n .addPerson(incoming_caller)\r\n// Create a call style notification for an incoming call.\r\nNotification.Builder builder = Notification.Builder(context, CHANNEL_ID)\r\n .setContentIntent(contentIntent)\r\n .setSmallIcon(smallIcon)\r\n .setStyle(\r\n Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))\r\n .addPerson(incoming_caller);\r\nUse forOngoingCall() to create a call style notification for an ongoing call.\r\n// Create a call style notification for an ongoing call.\r\nval builder = Notification.Builder(context, CHANNEL_ID)\r\n .setContentIntent(contentIntent)\r\n .setSmallIcon(smallIcon)\r\n .setStyle(\r\n Notification.CallStyle.forOnGoingCall(caller, hangupIntent))\r\n .addPerson(second_caller)\r\n// Create a call style notification for an ongoing call.\r\nNotification.Builder builder = Notification.Builder(context, CHANNEL_ID)\r\n .setContentIntent(contentIntent)\r\n .setSmallIcon(smallIcon)\r\n .setStyle(\r\n Notification.CallStyle.forOnGoingCall(caller, hangupIntent))\r\n .addPerson(second_caller);\r\nUse forScreeningCall() to create a call style notification for screening a call.\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 5 of 14\n\n// Create a call style notification for screening a call.\r\nval builder = Notification.Builder(context, CHANNEL_ID)\r\n .setContentIntent(contentIntent)\r\n .setSmallIcon(smallIcon)\r\n .setStyle(\r\n Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))\r\n .addPerson(second_caller)\r\nNotification.Builder builder = Notification.Builder(context, CHANNEL_ID)\r\n .setContentIntent(contentIntent)\r\n .setSmallIcon(smallIcon)\r\n .setStyle(\r\n Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))\r\n .addPerson(second_caller);\r\nEnriched image support for notifications\r\nIn Android 12, you can now enrich your app’s notification experience by providing animated images in\r\nMessagingStyle() and BigPictureStyle() notifications. Also, your app can now enable users to send image\r\nmessages when they reply to messages from the notification shade.\r\nImmersive mode improvements for gesture navigation\r\nAndroid 12 consolidates existing behavior to make it easier for users to perform gesture navigation commands\r\nwhile in immersive mode. In addition, Android 12 provides backward compatibility behavior for sticky immersive\r\nmode.\r\nRecents URL sharing (Pixel only)\r\nOn Pixel devices, users can now share links to recently viewed web content directly from the Recents screen.\r\nAfter visiting the content in an app, the user can swipe to the Recents screen and find the app where they viewed\r\nthe content, then tap on the link button to copy or share the URL.\r\nFor more information, see Enable recents URL sharing.\r\nSecurity and privacy\r\nPrivacy Dashboard\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 6 of 14\n\nFigure 1. Location usage screen, part of the Privacy Dashboard.\r\nOn supported devices that run Android 12 or higher, a Privacy Dashboard screen appears in system settings. On\r\nthis screen, users can access separate screens that show when apps access location, camera, and microphone\r\ninformation. Each screen shows a timeline of when different apps have accessed a particular type of data. Figure 1\r\nshows the data access timeline for location information.\r\nYour app can provide a rationale for users to help them understand why your app accesses location, camera, or\r\nmicrophone information. This rationale can appear on the new Privacy Dashboard screen, your app's permissions\r\nscreen, or both.\r\nBluetooth permissions\r\nAndroid 12 introduces the BLUETOOTH_SCAN , BLUETOOTH_ADVERTISE , and BLUETOOTH_CONNECT permissions.\r\nThese permissions make it easier for apps that target Android 12 to interact with Bluetooth devices, especially for\r\napps that don't require access to device location.\r\nUpdate your app's Bluetooth permission declarations\r\nTo prepare your device for targeting Android 12 or higher, update your app's logic. Instead of declaring a legacy\r\nset of Bluetooth permissions, declare a more modern set of Bluetooth permissions.\r\nPermission group lookup\r\nOn Android 12 or higher, you can query how the system organizes platform-provided permissions into permission\r\ngroups:\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 7 of 14\n\nTo determine the permission group into which the system has placed a platform-defined permission, call\r\ngetGroupOfPlatformPermission() .\r\nTo determine the platform-defined permissions that the system has placed into a particular permission\r\ngroup, call getPlatformPermissionsForGroup() .\r\nHide application overlay windows\r\nTo give developers more control over what users see when they interact with the developer's app, Android 12\r\nintroduces the ability to hide overlay windows that are drawn by apps that have the SYSTEM_ALERT_WINDOW\r\npermission.\r\nAfter declaring the HIDE_OVERLAY_WINDOWS permission, an app can call setHideOverlayWindows() to indicate\r\nthat all windows of type TYPE_APPLICATION_OVERLAY should be hidden when the app's own window is visible.\r\nApps might choose to do this when displaying sensitive screens, such as transaction confirmation flows.\r\nApps that show windows of type TYPE_APPLICATION_OVERLAY should consider alternatives that may be more\r\nappropriate for their use case, such as picture-in-picture or bubbles.\r\nKnown signers permission protection flag\r\nStarting in Android 12, the knownCerts attribute for signature-level permissions allows you to refer to the digests\r\nof known signing certificates at declaration time.\r\nYour app can declare this attribute and use the knownSigner flag to allow devices and apps to grant signature\r\npermissions to other apps, without having to sign the apps at the time of device manufacturing and shipment.\r\nDevice properties attestation\r\nAndroid 12 expands the set of apps that can verify the device properties that are in an attestation certificate when\r\nthese apps generate a new key.\r\nAs of Android 9 (API level 28), device policy owners (DPOs) that use Keymaster 4.0 or higher can verify the\r\ndevice properties in these attestation certificates. Starting in Android 12, any app that targets Android 12 (API\r\nlevel 31) or higher can perform this verification using the setDevicePropertiesAttestationIncluded() method.\r\nThe generated device properties include the following Build fields:\r\nBRAND\r\nDEVICE\r\nMANUFACTURER\r\nMODEL\r\nPRODUCT\r\nSecure lockscreen notification actions\r\nStarting in Android 12, the Notification.Action.Builder class supports the setAuthenticationRequired()\r\nmethod, which allows your app to require that a device is unlocked before your app invokes a given notification\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 8 of 14\n\naction. This method helps add an extra layer of security to notifications on locked devices.\r\nLocalizable strings for BiometricPrompt\r\nAndroid 12 introduces new APIs to help you improve your app's biometric authentication user experience. The\r\nnew BiometricManager.Strings nested class includes the getButtonLabel() , getPromptMessage() , and\r\ngetSettingName() methods, which let your app retrieve a user-readable and localized button label, prompt\r\nmessage, or app setting name. Use these labels to create more precise user-facing instructions that are specific to\r\nthe biometric authentication methods used, such as “Use face unlock” or “Use your fingerprint to continue”.\r\nCompatible media transcoding\r\nStarting in Android 12 (API level 31), the system can automatically transcode HEVC(H.265) and HDR (HDR10\r\nand HDR10+) videos recorded on the device to AVC (H.264), a format which is widely compatible with standard\r\nplayers. This takes advantage of modern codecs when they are available without sacrificing compatibility with\r\nolder applications.\r\nSee compatible media transcoding for more details.\r\nPerformance class\r\nAndroid 12 introduces a standard called performance class. A performance class specifies hardware capabilities\r\nbeyond Android's baseline requirements. Each Android device declares the performance class that it supports.\r\nDevelopers can check the device's performance class at runtime and provide upgraded experiences that take full\r\nadvantage of the device’s capabilities.\r\nSee Performance class for more details.\r\nVideo encoding improvements\r\nAndroid 12 defines a standard set of keys for controlling the quantization parameter (QP) value for video\r\nencoding, allowing developers to avoid vendor-specific code.\r\nThe new keys are available in the MediaFormat API and also in the NDK Media library.\r\nStarting with Android 12 video encoders enforce a minimum quality threshold. This guarantees that users don't\r\nexperience extremely low quality when encoding videos with high scene complexity.\r\nAudio focus\r\nStarting with Android 12 (API level 31), when an app requests audio focus while another app has the focus and is\r\nplaying, the system fades out the playing app.\r\nSee Audio focus in Android 12 and higher for more details.\r\nMediaDrm updates\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 9 of 14\n\nIn order to determine whether a secure decoder component is required with the current MediaDrm APIs, you must\r\nfollow these steps:\r\n1. Create a MediaDrm .\r\n2. Open a session to obtain a session id.\r\n3. Create a MediaCrypto using the session id.\r\n4. Call MediaCrypto.requiresSecureDecoderComponent(mimeType) .\r\nWith the new methods requiresSecureDecoder(@NonNull String mime) and requiresSecureDecoder(@NonNull\r\nString mime, @SecurityLevel int level) you can determine this as soon as you create a MediaDrm .\r\nCamera\r\nCamera2 vendor extensions\r\nMany of our device manufacturer partners have built custom camera extensions—such as Bokeh, HDR, Night\r\nmode, and others—that they want apps to use to create differentiated experiences on their devices. The CameraX\r\nlibrary already supports these custom vendor extensions. In Android 12, these vendor extensions are now exposed\r\ndirectly in the platform.\r\nThis addition helps apps that have complex Camera2 implementations take advantage of vendor extensions\r\nwithout having to make significant changes to legacy code. The Camera2 Extension APIs expose exactly the same\r\nset of extensions as in CameraX, and those are already supported on many different devices, so you can use them\r\nwithout any additional configuration.\r\nFor more information, see CameraExtensionCharacteristics .\r\nQuad bayer camera sensor support\r\nMany Android devices today ship with ultra high-resolution camera sensors, typically with Quad or Nona Bayer\r\npatterns, and these offer great flexibility in terms of image quality and low-light performance. Android 12\r\nintroduces new platform APIs that let third-party apps take full advantage of these versatile sensors. The new APIs\r\nsupport the unique behavior of these sensors and take into account that they might support different stream\r\nconfigurations and combinations when operating in full resolution or ‘maximum resolution’ mode vs ‘default’\r\nmode.\r\nGraphics and images\r\nProvide apps direct access to tombstone traces\r\nStarting in Android 12, you can access your app's native crash tombstone as a protocol buffer through the\r\nApplicationExitInfo.getTraceInputStream() method. The protocol buffer is serialized using this schema.\r\nPreviously, the only way to get access to this information was through the Android Debug Bridge (adb).\r\nFor more information, see Provide apps direct access to tombstone traces\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 10 of 14\n\nAVIF image support\r\nAndroid 12 introduces support for images that use the AV1 Image File Format (AVIF). AVIF is a container format\r\nfor images and sequences of images encoded using AV1. AVIF takes advantage of the intra-frame encoded content\r\nfrom video compression. This dramatically improves image quality for the same file size when compared to older\r\nimage formats, such as JPEG. For an in-depth look at the advantages of this format, see Jake Archibald's blog\r\npost.\r\nEasier blurs, color filters, and other effects\r\nAndroid 12 adds the new RenderEffect that applies common graphics effects such as blurs, color filters,\r\nAndroid shader effects, and more to View s and rendering hierarchies. Effects can be combined as either chain\r\neffects (which compose an inner and outer effect) or blended effects. Different Android devices may or may not\r\nsupport the feature due to limited processing power.\r\nEffects can also be applied to the underlying RenderNode for View s by calling\r\nView.setRenderEffect(RenderEffect) .\r\nTo implement a RenderEffect :\r\nview.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))\r\nNative animated image decoding\r\nIn Android 12, the NDK ImageDecoder API has been expanded to decode all frames and timing data from\r\nimages that use the animated GIF and animated WebP file formats. When it was introduced in Android 11, this\r\nAPI decoded only the first image from animations in these formats.\r\nUse ImageDecoder instead of third-party libraries to further decrease APK size and benefit from future updates\r\nrelated to security and performance.\r\nFor more details on the API, refer to the API reference and the sample on GitHub.\r\nConnectivity\r\nKeeping companion apps awake\r\nTo support the need of companion apps to stay running to manage the device, Android 12 introduces APIs that do\r\nthe following:\r\nEnable you to wake an app when a companion device is within range.\r\nGuarantee that the process will continue running while the device stays within range.\r\nTo use the APIs, your devices must be connected using Companion Device Manager. For more information, see\r\nCompanionDeviceManager.startObservingDevicePresence() and\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 11 of 14\n\nCompanionDeviceService.onDeviceAppeared() .\r\nCompanion Device Manager profiles\r\nA permissions dialog that uses a companion device profile to request multiple permissions in a\r\nsingle request.\r\nPartner apps on Android 12 (API level 31) and higher can use companion device profiles when connecting to a\r\nwatch. Using a profile simplifies the enrollment process by bundling the granting of a device-type-specific set of\r\npermissions into one step.\r\nThe bundled permissions are granted to the companion app once the device connects, and last only while the\r\ndevice is associated. Deleting the app or removing the association removes the permissions.\r\nFor more information, see AssociationRequest.Builder.setDeviceProfile() .\r\nBandwidth estimation improvements\r\nIn Android 12, the bandwidth estimation capabilities provided by getLinkDownstreamBandwidthKbps() and\r\ngetLinkUpstreamBandwidthKbps() are improved for both Wi-Fi and cellular connectivity. The values returned\r\nnow represent the user’s all-time weighted average throughput per carrier or WiFi SSID, network type, and signal\r\nlevel, across all applications on the device. This can return a more-accurate and realistic estimate of expected\r\nthroughput, provide estimates on a cold start of your application, and requires fewer cycles when compared to\r\nusing other throughput estimation methods.\r\nWi-Fi Aware (NAN) enhancements\r\nAndroid 12 adds some enhancements to Wi-Fi Aware:\r\nOn devices running Android 12 (API level 31) and higher, you can use the onServiceLost() callback to\r\nbe alerted when your app has lost a discovered service due to the service stopping or moving out of range.\r\nThe way that multiple data-paths (NAN Data Paths) are set up is changing to be more efficient. Earlier\r\nversions used L2 messaging to exchange peer information of the initiators, which introduced latency. On\r\ndevices running Android 12 and higher, the responder (server) can be configured to accept any peer—that\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 12 of 14\n\nis, it doesn’t need to know the initiator information upfront. This speeds up datapath bringup and enables\r\nmultiple point-to-point links with only one network request.\r\nTo prevent the framework from rejecting discovery or connection requests due to running out of resources,\r\non devices running Android 12 and higher, you can call\r\nWifiAwareManager.getAvailableAwareResources() . This method's return value lets you get the number of\r\navailable data paths, the number of available publish sessions, and the number of available subscribe\r\nsessions.\r\nConcurrent Peer-to-Peer + Internet Connection\r\nWhen devices targeting Android 12 (API level 31) and higher run on devices with hardware support, using Peer-to-peer connections will not disconnect your existing Wi-Fi connection when creating the connection to the peer\r\ndevice. To check for support for this feature, use WifiManager.isMultiStaConcurrencySupported() .\r\nEnable screen off for NFC payments\r\nIn apps that target Android 12 and higher, you can enable NFC payments without the device's screen on by setting\r\nrequireDeviceScreenOn to false . For more information about NFC payments with screen off or locked, see\r\nScreen off and lock-screen behavior.\r\nStorage\r\nAndroid 12 introduces the following storage management capabilities:\r\nMedia store support for MediaDocumentsProvider when your app retrieves a media URI that is equivalent\r\nto a given documents provider URI.\r\nA directory for voice recordings.\r\nThe MANAGE_MEDIA permission, which allows an app to perform media management operations without\r\nshowing a confirmation dialog to the user for each operation.\r\nApps that have both the MANAGE_EXTERNAL_STORAGE permission and the QUERY_ALL_PACKAGES permission\r\n—such as file management apps—can invoke a custom activity for managing another app's storage space,\r\nprovided that the other app creates the custom activity.\r\nCore functionality\r\nAutomatic app updates\r\nAndroid 12 introduces the setRequireUserAction() method for apps that use the PackageInstaller API. This\r\nmethod allows installer apps to perform app updates without requiring the user to confirm the action.\r\nDevice chipset information\r\nAndroid 12 adds two constants to android.os.Build that expose the SoC chipset vendor and model information\r\nvia the SDK. You can retrieve this information by calling Build.SOC_MANUFACTURER and Build.SOC_MODEL\r\nrespectively.\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 13 of 14\n\nUpdates to core Java APIs\r\nBased on requests and collaboration with developers, we've added the following core libraries in Android 12:\r\nSource: https://developer.android.com/about/versions/12/features\r\nhttps://developer.android.com/about/versions/12/features\r\nPage 14 of 14",
	"extraction_quality": 1,
	"language": "EN",
	"sources": [
		"MITRE"
	],
	"references": [
		"https://developer.android.com/about/versions/12/features"
	],
	"report_names": [
		"features"
	],
	"threat_actors": [
		{
			"id": "f8dddd06-da24-4184-9e24-4c22bdd1cbbf",
			"created_at": "2023-01-06T13:46:38.626906Z",
			"updated_at": "2026-04-10T02:00:03.043681Z",
			"deleted_at": null,
			"main_name": "Tick",
			"aliases": [
				"G0060",
				"Stalker Taurus",
				"PLA Unit 61419",
				"Swirl Typhoon",
				"Nian",
				"BRONZE BUTLER",
				"REDBALDKNIGHT",
				"STALKER PANDA"
			],
			"source_name": "MISPGALAXY:Tick",
			"tools": [],
			"source_id": "MISPGALAXY",
			"reports": null
		},
		{
			"id": "54e55585-1025-49d2-9de8-90fc7a631f45",
			"created_at": "2025-08-07T02:03:24.563488Z",
			"updated_at": "2026-04-10T02:00:03.715427Z",
			"deleted_at": null,
			"main_name": "BRONZE BUTLER",
			"aliases": [
				"CTG-2006 ",
				"Daserf",
				"Stalker Panda ",
				"Swirl Typhoon ",
				"Tick "
			],
			"source_name": "Secureworks:BRONZE BUTLER",
			"tools": [
				"ABK",
				"BBK",
				"Casper",
				"DGet",
				"Daserf",
				"Datper",
				"Ghostdown",
				"Gofarer",
				"MSGet",
				"Mimikatz",
				"Netboy",
				"RarStar",
				"Screen Capture Tool",
				"ShadowPad",
				"ShadowPy",
				"T-SMB",
				"down_new",
				"gsecdump"
			],
			"source_id": "Secureworks",
			"reports": null
		},
		{
			"id": "d4e7cd9a-2290-4f89-a645-85b9a46d004b",
			"created_at": "2022-10-25T16:07:23.419513Z",
			"updated_at": "2026-04-10T02:00:04.591062Z",
			"deleted_at": null,
			"main_name": "Bronze Butler",
			"aliases": [
				"Bronze Butler",
				"CTG-2006",
				"G0060",
				"Operation ENDTRADE",
				"RedBaldNight",
				"Stalker Panda",
				"Stalker Taurus",
				"Swirl Typhoon",
				"TEMP.Tick",
				"Tick"
			],
			"source_name": "ETDA:Bronze Butler",
			"tools": [
				"8.t Dropper",
				"8.t RTF exploit builder",
				"8t_dropper",
				"9002 RAT",
				"AngryRebel",
				"Blogspot",
				"Daserf",
				"Datper",
				"Elirks",
				"Farfli",
				"Gh0st RAT",
				"Ghost RAT",
				"HOMEUNIX",
				"HidraQ",
				"HomamDownloader",
				"Homux",
				"Hydraq",
				"Lilith",
				"Lilith RAT",
				"McRAT",
				"MdmBot",
				"Mimikatz",
				"Minzen",
				"Moudour",
				"Muirim",
				"Mydoor",
				"Nioupale",
				"PCRat",
				"POISONPLUG.SHADOW",
				"Roarur",
				"RoyalRoad",
				"ShadowPad Winnti",
				"ShadowWali",
				"ShadowWalker",
				"SymonLoader",
				"WCE",
				"Wali",
				"Windows Credential Editor",
				"Windows Credentials Editor",
				"XShellGhost",
				"XXMM",
				"gsecdump",
				"rarstar"
			],
			"source_id": "ETDA",
			"reports": null
		}
	],
	"ts_created_at": 1775434670,
	"ts_updated_at": 1775792173,
	"ts_creation_date": 0,
	"ts_modification_date": 0,
	"files": {
		"pdf": "https://archive.orkl.eu/82f6ebb2ab83ac0bf366245b944fd5e2e5d4c313.pdf",
		"text": "https://archive.orkl.eu/82f6ebb2ab83ac0bf366245b944fd5e2e5d4c313.txt",
		"img": "https://archive.orkl.eu/82f6ebb2ab83ac0bf366245b944fd5e2e5d4c313.jpg"
	}
}