From fa7edbf528295c7c4846673cb10713c41a109771 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Thu, 26 Feb 2026 21:42:00 -0500 Subject: [PATCH 1/8] Remove JNI dependency for `Permission.Group` --- Sources/AndroidManifest/PermissionGroup.swift | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/Sources/AndroidManifest/PermissionGroup.swift b/Sources/AndroidManifest/PermissionGroup.swift index d3b2069f..680aabbd 100644 --- a/Sources/AndroidManifest/PermissionGroup.swift +++ b/Sources/AndroidManifest/PermissionGroup.swift @@ -5,11 +5,9 @@ // Created by Killian Greene on 7/6/18. // -import SwiftJava - public extension Permission { - public struct Group: RawRepresentable, Equatable, Hashable, Codable, Sendable { + struct Group: RawRepresentable, Equatable, Hashable, Codable, Sendable { public let rawValue: String @@ -21,23 +19,23 @@ public extension Permission { public extension Permission.Group { - static let calendar = Permission.Group(rawValue: try! JavaClass().CALENDAR) + static let calendar = Permission.Group(rawValue: "android.permission-group.CALENDAR") - static let callLog = Permission.Group(rawValue: try! JavaClass().CALL_LOG) + static let callLog = Permission.Group(rawValue: "android.permission-group.CALL_LOG") - static let camera = Permission.Group(rawValue: try! JavaClass().CAMERA) + static let camera = Permission.Group(rawValue: "android.permission-group.CAMERA") - static let contacts = Permission.Group(rawValue: try! JavaClass().CONTACTS) + static let contacts = Permission.Group(rawValue: "android.permission-group.CONTACTS") - static let location = Permission.Group(rawValue: try! JavaClass().LOCATION) + static let location = Permission.Group(rawValue: "android.permission-group.LOCATION") - static let microphone = Permission.Group(rawValue: try! JavaClass().MICROPHONE) + static let microphone = Permission.Group(rawValue: "android.permission-group.MICROPHONE") - static let phone = Permission.Group(rawValue: try! JavaClass().PHONE) + static let phone = Permission.Group(rawValue: "android.permission-group.PHONE") - static let sensors = Permission.Group(rawValue: try! JavaClass().SENSORS) + static let sensors = Permission.Group(rawValue: "android.permission-group.SENSORS") - static let sms = Permission.Group(rawValue: try! JavaClass().SMS) + static let sms = Permission.Group(rawValue: "android.permission-group.SMS") - static let storage = Permission.Group(rawValue: try! JavaClass().STORAGE) + static let storage = Permission.Group(rawValue: "android.permission-group.STORAGE") } From 687c8baef9e9c7292bc1843f786898a0b8bcace5 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Thu, 26 Feb 2026 21:43:09 -0500 Subject: [PATCH 2/8] Update `Permission` --- Sources/AndroidManifest/Permission.swift | 128 ++++++++++++++++++++++- 1 file changed, 126 insertions(+), 2 deletions(-) diff --git a/Sources/AndroidManifest/Permission.swift b/Sources/AndroidManifest/Permission.swift index 86113234..abe5ccd5 100644 --- a/Sources/AndroidManifest/Permission.swift +++ b/Sources/AndroidManifest/Permission.swift @@ -5,8 +5,6 @@ // Created by Alsey Coleman Miller on 3/22/18. // -import SwiftJava - /// Android Manifest Permission public struct Permission: RawRepresentable, Equatable, Hashable, Codable, Sendable { @@ -419,4 +417,130 @@ public extension Permission { static let writeSyncSettings = Permission(rawValue: javaClass.WRITE_SYNC_SETTINGS) static let writeVoicemail = Permission(rawValue: javaClass.WRITE_VOICEMAIL) + + @available(Android 31, *) + static let accessBlobsAcrossUsers = Permission(rawValue: javaClass.ACCESS_BLOBS_ACROSS_USERS) + + @available(Android 29, *) + static let bindCallRedirectionService = Permission(rawValue: javaClass.BIND_CALL_REDIRECTION_SERVICE) + + @available(Android 29, *) + static let bindCarrierMessagingClientService = Permission(rawValue: javaClass.BIND_CARRIER_MESSAGING_CLIENT_SERVICE) + + static let bindCarrierMessagingService = Permission(rawValue: javaClass.BIND_CARRIER_MESSAGING_SERVICE) + + @available(Android 31, *) + static let bindCompanionDeviceService = Permission(rawValue: javaClass.BIND_COMPANION_DEVICE_SERVICE) + + @available(Android 30, *) + static let bindControls = Permission(rawValue: javaClass.BIND_CONTROLS) + + @available(Android 30, *) + static let bindQuickAccessWalletService = Permission(rawValue: javaClass.BIND_QUICK_ACCESS_WALLET_SERVICE) + + @available(Android 33, *) + static let bindTvInteractiveApp = Permission(rawValue: javaClass.BIND_TV_INTERACTIVE_APP) + + @available(Android 29, *) + static let callCompanionApp = Permission(rawValue: javaClass.CALL_COMPANION_APP) + + @available(Android 33, *) + static let deliverCompanionMessages = Permission(rawValue: javaClass.DELIVER_COMPANION_MESSAGES) + + static let getTasks = Permission(rawValue: javaClass.GET_TASKS) + + @available(Android 31, *) + static let hideOverlayWindows = Permission(rawValue: javaClass.HIDE_OVERLAY_WINDOWS) + + @available(Android 31, *) + static let highSamplingRateSensors = Permission(rawValue: javaClass.HIGH_SAMPLING_RATE_SENSORS) + + @available(Android 30, *) + static let interactAcrossProfiles = Permission(rawValue: javaClass.INTERACT_ACROSS_PROFILES) + + @available(Android 32, *) + static let launchMultiPaneSettingsDeepLink = Permission(rawValue: javaClass.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK) + + @available(Android 30, *) + static let loaderUsageStats = Permission(rawValue: javaClass.LOADER_USAGE_STATS) + + @available(Android 33, *) + static let manageWifiInterfaces = Permission(rawValue: javaClass.MANAGE_WIFI_INTERFACES) + + @available(Android 33, *) + static let manageWifiNetworkSelection = Permission(rawValue: javaClass.MANAGE_WIFI_NETWORK_SELECTION) + + @available(Android 33, *) + static let overrideWifiConfig = Permission(rawValue: javaClass.OVERRIDE_WIFI_CONFIG) + + static let persistentActivity = Permission(rawValue: javaClass.PERSISTENT_ACTIVITY) + + @available(Android 30, *) + static let queryAllPackages = Permission(rawValue: javaClass.QUERY_ALL_PACKAGES) + + @available(Android 33, *) + static let readAssistantAppSearchData = Permission(rawValue: javaClass.READ_ASSISTANT_APP_SEARCH_DATA) + + @available(Android 33, *) + static let readBasicPhoneState = Permission(rawValue: javaClass.READ_BASIC_PHONE_STATE) + + @available(Android 33, *) + static let readHomeAppSearchData = Permission(rawValue: javaClass.READ_HOME_APP_SEARCH_DATA) + + static let readInputState = Permission(rawValue: javaClass.READ_INPUT_STATE) + + @available(Android 33, *) + static let readNearbyStreamingPolicy = Permission(rawValue: javaClass.READ_NEARBY_STREAMING_POLICY) + + @available(Android 30, *) + static let readPrecisePhoneState = Permission(rawValue: javaClass.READ_PRECISE_PHONE_STATE) + + @available(Android 33, *) + static let requestCompanionProfileAppStreaming = Permission(rawValue: javaClass.REQUEST_COMPANION_PROFILE_APP_STREAMING) + + @available(Android 33, *) + static let requestCompanionProfileAutomotiveProjection = Permission(rawValue: javaClass.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION) + + @available(Android 33, *) + static let requestCompanionProfileComputer = Permission(rawValue: javaClass.REQUEST_COMPANION_PROFILE_COMPUTER) + + @available(Android 31, *) + static let requestCompanionProfileWatch = Permission(rawValue: javaClass.REQUEST_COMPANION_PROFILE_WATCH) + + @available(Android 33, *) + static let requestCompanionSelfManaged = Permission(rawValue: javaClass.REQUEST_COMPANION_SELF_MANAGED) + + @available(Android 31, *) + static let requestCompanionStartForegroundServicesFromBackground = Permission(rawValue: javaClass.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND) + + @available(Android 31, *) + static let requestObserveCompanionDevicePresence = Permission(rawValue: javaClass.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE) + + static let restartPackages = Permission(rawValue: javaClass.RESTART_PACKAGES) + + static let setPreferredApplications = Permission(rawValue: javaClass.SET_PREFERRED_APPLICATIONS) + + @available(Android 29, *) + static let smsFinancialTransactions = Permission(rawValue: javaClass.SMS_FINANCIAL_TRANSACTIONS) + + @available(Android 31, *) + static let startForegroundServicesFromBackground = Permission(rawValue: javaClass.START_FOREGROUND_SERVICES_FROM_BACKGROUND) + + @available(Android 33, *) + static let startViewAppFeatures = Permission(rawValue: javaClass.START_VIEW_APP_FEATURES) + + @available(Android 29, *) + static let startViewPermissionUsage = Permission(rawValue: javaClass.START_VIEW_PERMISSION_USAGE) + + @available(Android 33, *) + static let subscribeToKeyguardLockedState = Permission(rawValue: javaClass.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE) + + @available(Android 31, *) + static let updatePackagesWithoutUserAction = Permission(rawValue: javaClass.UPDATE_PACKAGES_WITHOUT_USER_ACTION) + + @available(Android 23, *) + static let useFingerprint = Permission(rawValue: javaClass.USE_FINGERPRINT) + + @available(Android 31, *) + static let useIccAuthWithDeviceIdentifier = Permission(rawValue: javaClass.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER) } From 86d3356be89c8007827049e59d5659ae00870db3 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Thu, 26 Feb 2026 21:44:42 -0500 Subject: [PATCH 3/8] Remove JNI dependency for `Permission` --- Sources/AndroidManifest/Permission.swift | 669 ++++++++--------------- 1 file changed, 222 insertions(+), 447 deletions(-) diff --git a/Sources/AndroidManifest/Permission.swift b/Sources/AndroidManifest/Permission.swift index abe5ccd5..9b236791 100644 --- a/Sources/AndroidManifest/Permission.swift +++ b/Sources/AndroidManifest/Permission.swift @@ -15,532 +15,307 @@ public struct Permission: RawRepresentable, Equatable, Hashable, Codable, Sendab } } -internal extension Permission { - - static let javaClass = try! JavaClass() -} public extension Permission { - static let acceptHandover = Permission(rawValue: javaClass.ACCEPT_HANDOVER) - - static let accessCheckinProperties = Permission(rawValue: javaClass.ACCESS_CHECKIN_PROPERTIES) - - static let accessCoarseLocation = Permission(rawValue: javaClass.ACCESS_COARSE_LOCATION) - - static let accessFineLocation = Permission(rawValue: javaClass.ACCESS_FINE_LOCATION) - - static let accessLocationExtraCommands = Permission(rawValue: javaClass.ACCESS_LOCATION_EXTRA_COMMANDS) - - static let accessNetworkState = Permission(rawValue: javaClass.ACCESS_NETWORK_STATE) - - static let accessNotificationPolicy = Permission(rawValue: javaClass.ACCESS_NOTIFICATION_POLICY) - - static let accessWifiState = Permission(rawValue: javaClass.ACCESS_WIFI_STATE) - + static var acceptHandover: Permission { Permission(rawValue: "android.permission.ACCEPT_HANDOVER") } + static var accessCheckinProperties: Permission { Permission(rawValue: "android.permission.ACCESS_CHECKIN_PROPERTIES") } + static var accessCoarseLocation: Permission { Permission(rawValue: "android.permission.ACCESS_COARSE_LOCATION") } + static var accessFineLocation: Permission { Permission(rawValue: "android.permission.ACCESS_FINE_LOCATION") } + static var accessLocationExtraCommands: Permission { Permission(rawValue: "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS") } + static var accessNetworkState: Permission { Permission(rawValue: "android.permission.ACCESS_NETWORK_STATE") } + static var accessNotificationPolicy: Permission { Permission(rawValue: "android.permission.ACCESS_NOTIFICATION_POLICY") } + static var accessWifiState: Permission { Permission(rawValue: "android.permission.ACCESS_WIFI_STATE") } @available(Android 29, *) - static let accessBackgroundLocation = Permission(rawValue: javaClass.ACCESS_BACKGROUND_LOCATION) - + static var accessBackgroundLocation: Permission { Permission(rawValue: "android.permission.ACCESS_BACKGROUND_LOCATION") } @available(Android 29, *) - static let accessMediaLocation = Permission(rawValue: javaClass.ACCESS_MEDIA_LOCATION) - - static let accountManager = Permission(rawValue: javaClass.ACCOUNT_MANAGER) - + static var accessMediaLocation: Permission { Permission(rawValue: "android.permission.ACCESS_MEDIA_LOCATION") } + static var accountManager: Permission { Permission(rawValue: "android.permission.ACCOUNT_MANAGER") } @available(Android 29, *) - static let activityRecognition = Permission(rawValue: javaClass.ACTIVITY_RECOGNITION) - - static let addVoicemail = Permission(rawValue: javaClass.ADD_VOICEMAIL) - + static var activityRecognition: Permission { Permission(rawValue: "android.permission.ACTIVITY_RECOGNITION") } + static var addVoicemail: Permission { Permission(rawValue: "com.android.voicemail.permission.ADD_VOICEMAIL") } @available(Android 26, *) - static let answerPhoneCalls = Permission(rawValue: javaClass.ANSWER_PHONE_CALLS) - - static let batteryStats = Permission(rawValue: javaClass.BATTERY_STATS) - - static let bindAccessibilityService = Permission(rawValue: javaClass.BIND_ACCESSIBILITY_SERVICE) - - static let bindAppwidget = Permission(rawValue: javaClass.BIND_APPWIDGET) - - static let bindAutofillService = Permission(rawValue: javaClass.BIND_AUTOFILL_SERVICE) - - static let bindCarrierServices = Permission(rawValue: javaClass.BIND_CARRIER_SERVICES) - - static let bindChooserTargetService = Permission(rawValue: javaClass.BIND_CHOOSER_TARGET_SERVICE) - - static let bindConditionProviderService = Permission(rawValue: javaClass.BIND_CONDITION_PROVIDER_SERVICE) - - static let bindDeviceAdmin = Permission(rawValue: javaClass.BIND_DEVICE_ADMIN) - - static let bindDreamService = Permission(rawValue: javaClass.BIND_DREAM_SERVICE) - - static let bindIncallService = Permission(rawValue: javaClass.BIND_INCALL_SERVICE) - - static let bindInputMethod = Permission(rawValue: javaClass.BIND_INPUT_METHOD) - - static let bindMidiDeviceService = Permission(rawValue: javaClass.BIND_MIDI_DEVICE_SERVICE) - - static let bindNfcService = Permission(rawValue: javaClass.BIND_NFC_SERVICE) - - static let bindNotificationListenerService = Permission(rawValue: javaClass.BIND_NOTIFICATION_LISTENER_SERVICE) - - static let bindPrintService = Permission(rawValue: javaClass.BIND_PRINT_SERVICE) - - static let bindQuickSettingsTile = Permission(rawValue: javaClass.BIND_QUICK_SETTINGS_TILE) - - static let bindRemoteviews = Permission(rawValue: javaClass.BIND_REMOTEVIEWS) - - static let bindScreeningService = Permission(rawValue: javaClass.BIND_SCREENING_SERVICE) - - static let bindTelecomConnectionService = Permission(rawValue: javaClass.BIND_TELECOM_CONNECTION_SERVICE) - - static let bindTextService = Permission(rawValue: javaClass.BIND_TEXT_SERVICE) - - static let bindTvInput = Permission(rawValue: javaClass.BIND_TV_INPUT) - - static let bindVisualVoicemailService = Permission(rawValue: javaClass.BIND_VISUAL_VOICEMAIL_SERVICE) - - static let bindVoiceInteraction = Permission(rawValue: javaClass.BIND_VOICE_INTERACTION) - - static let bindVpnService = Permission(rawValue: javaClass.BIND_VPN_SERVICE) - - static let bindVrListenerService = Permission(rawValue: javaClass.BIND_VR_LISTENER_SERVICE) - - static let bindWallpaper = Permission(rawValue: javaClass.BIND_WALLPAPER) - - static let bluetooth = Permission(rawValue: javaClass.BLUETOOTH) - - static let bluetoothAdmin = Permission(rawValue: javaClass.BLUETOOTH_ADMIN) - - static let bluetoothPrivileged = Permission(rawValue: javaClass.BLUETOOTH_PRIVILEGED) - + static var answerPhoneCalls: Permission { Permission(rawValue: "android.permission.ANSWER_PHONE_CALLS") } + static var batteryStats: Permission { Permission(rawValue: "android.permission.BATTERY_STATS") } + static var bindAccessibilityService: Permission { Permission(rawValue: "android.permission.BIND_ACCESSIBILITY_SERVICE") } + static var bindAppwidget: Permission { Permission(rawValue: "android.permission.BIND_APPWIDGET") } + static var bindAutofillService: Permission { Permission(rawValue: "android.permission.BIND_AUTOFILL_SERVICE") } + static var bindCarrierServices: Permission { Permission(rawValue: "android.permission.BIND_CARRIER_SERVICES") } + static var bindChooserTargetService: Permission { Permission(rawValue: "android.permission.BIND_CHOOSER_TARGET_SERVICE") } + static var bindConditionProviderService: Permission { Permission(rawValue: "android.permission.BIND_CONDITION_PROVIDER_SERVICE") } + static var bindDeviceAdmin: Permission { Permission(rawValue: "android.permission.BIND_DEVICE_ADMIN") } + static var bindDreamService: Permission { Permission(rawValue: "android.permission.BIND_DREAM_SERVICE") } + static var bindIncallService: Permission { Permission(rawValue: "android.permission.BIND_INCALL_SERVICE") } + static var bindInputMethod: Permission { Permission(rawValue: "android.permission.BIND_INPUT_METHOD") } + static var bindMidiDeviceService: Permission { Permission(rawValue: "android.permission.BIND_MIDI_DEVICE_SERVICE") } + static var bindNfcService: Permission { Permission(rawValue: "android.permission.BIND_NFC_SERVICE") } + static var bindNotificationListenerService: Permission { Permission(rawValue: "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE") } + static var bindPrintService: Permission { Permission(rawValue: "android.permission.BIND_PRINT_SERVICE") } + static var bindQuickSettingsTile: Permission { Permission(rawValue: "android.permission.BIND_QUICK_SETTINGS_TILE") } + static var bindRemoteviews: Permission { Permission(rawValue: "android.permission.BIND_REMOTEVIEWS") } + static var bindScreeningService: Permission { Permission(rawValue: "android.permission.BIND_SCREENING_SERVICE") } + static var bindTelecomConnectionService: Permission { Permission(rawValue: "android.permission.BIND_TELECOM_CONNECTION_SERVICE") } + static var bindTextService: Permission { Permission(rawValue: "android.permission.BIND_TEXT_SERVICE") } + static var bindTvInput: Permission { Permission(rawValue: "android.permission.BIND_TV_INPUT") } + static var bindVisualVoicemailService: Permission { Permission(rawValue: "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE") } + static var bindVoiceInteraction: Permission { Permission(rawValue: "android.permission.BIND_VOICE_INTERACTION") } + static var bindVpnService: Permission { Permission(rawValue: "android.permission.BIND_VPN_SERVICE") } + static var bindVrListenerService: Permission { Permission(rawValue: "android.permission.BIND_VR_LISTENER_SERVICE") } + static var bindWallpaper: Permission { Permission(rawValue: "android.permission.BIND_WALLPAPER") } + static var bluetooth: Permission { Permission(rawValue: "android.permission.BLUETOOTH") } + static var bluetoothAdmin: Permission { Permission(rawValue: "android.permission.BLUETOOTH_ADMIN") } + static var bluetoothPrivileged: Permission { Permission(rawValue: "android.permission.BLUETOOTH_PRIVILEGED") } @available(Android 31, *) - static let bluetoothAdvertise = Permission(rawValue: javaClass.BLUETOOTH_ADVERTISE) - + static var bluetoothAdvertise: Permission { Permission(rawValue: "android.permission.BLUETOOTH_ADVERTISE") } @available(Android 31, *) - static let bluetoothConnect = Permission(rawValue: javaClass.BLUETOOTH_CONNECT) - + static var bluetoothConnect: Permission { Permission(rawValue: "android.permission.BLUETOOTH_CONNECT") } @available(Android 31, *) - static let bluetoothScan = Permission(rawValue: javaClass.BLUETOOTH_SCAN) - - static let bodySensors = Permission(rawValue: javaClass.BODY_SENSORS) - + static var bluetoothScan: Permission { Permission(rawValue: "android.permission.BLUETOOTH_SCAN") } + static var bodySensors: Permission { Permission(rawValue: "android.permission.BODY_SENSORS") } @available(Android 33, *) - static let bodySensorsBackground = Permission(rawValue: javaClass.BODY_SENSORS_BACKGROUND) - - static let broadcastPackageRemoved = Permission(rawValue: javaClass.BROADCAST_PACKAGE_REMOVED) - - static let broadcastSms = Permission(rawValue: javaClass.BROADCAST_SMS) - - static let broadcastSticky = Permission(rawValue: javaClass.BROADCAST_STICKY) - - static let broadcastWapPush = Permission(rawValue: javaClass.BROADCAST_WAP_PUSH) - - static let callPhone = Permission(rawValue: javaClass.CALL_PHONE) - - static let callPrivileged = Permission(rawValue: javaClass.CALL_PRIVILEGED) - - static let camera = Permission(rawValue: javaClass.CAMERA) - - static let captureAudioOutput = Permission(rawValue: javaClass.CAPTURE_AUDIO_OUTPUT) - + static var bodySensorsBackground: Permission { Permission(rawValue: "android.permission.BODY_SENSORS_BACKGROUND") } + static var broadcastPackageRemoved: Permission { Permission(rawValue: "android.permission.BROADCAST_PACKAGE_REMOVED") } + static var broadcastSms: Permission { Permission(rawValue: "android.permission.BROADCAST_SMS") } + static var broadcastSticky: Permission { Permission(rawValue: "android.permission.BROADCAST_STICKY") } + static var broadcastWapPush: Permission { Permission(rawValue: "android.permission.BROADCAST_WAP_PUSH") } + static var callPhone: Permission { Permission(rawValue: "android.permission.CALL_PHONE") } + static var callPrivileged: Permission { Permission(rawValue: "android.permission.CALL_PRIVILEGED") } + static var camera: Permission { Permission(rawValue: "android.permission.CAMERA") } + static var captureAudioOutput: Permission { Permission(rawValue: "android.permission.CAPTURE_AUDIO_OUTPUT") } @available(Android 21, *) - static let captureSecureVideoOutput = Permission(rawValue: javaClass.CAPTURE_SECURE_VIDEO_OUTPUT) - + static var captureSecureVideoOutput: Permission { Permission(rawValue: "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT") } @available(Android 21, *) - static let captureVideoOutput = Permission(rawValue: javaClass.CAPTURE_VIDEO_OUTPUT) - - static let changeComponentEnabledState = Permission(rawValue: javaClass.CHANGE_COMPONENT_ENABLED_STATE) - - static let changeConfiguration = Permission(rawValue: javaClass.CHANGE_CONFIGURATION) - - static let changeNetworkState = Permission(rawValue: javaClass.CHANGE_NETWORK_STATE) - - static let changeWifiMulticastState = Permission(rawValue: javaClass.CHANGE_WIFI_MULTICAST_STATE) - - static let changeWifiState = Permission(rawValue: javaClass.CHANGE_WIFI_STATE) - - static let clearAppCache = Permission(rawValue: javaClass.CLEAR_APP_CACHE) - - static let controlLocationUpdates = Permission(rawValue: javaClass.CONTROL_LOCATION_UPDATES) - - static let deleteCacheFiles = Permission(rawValue: javaClass.DELETE_CACHE_FILES) - - static let deletePackages = Permission(rawValue: javaClass.DELETE_PACKAGES) - - static let diagnostic = Permission(rawValue: javaClass.DIAGNOSTIC) - - static let disableKeyguard = Permission(rawValue: javaClass.DISABLE_KEYGUARD) - - static let dump = Permission(rawValue: javaClass.DUMP) - - static let expandStatusBar = Permission(rawValue: javaClass.EXPAND_STATUS_BAR) - - static let factoryTest = Permission(rawValue: javaClass.FACTORY_TEST) - + static var captureVideoOutput: Permission { Permission(rawValue: "android.permission.CAPTURE_VIDEO_OUTPUT") } + static var changeComponentEnabledState: Permission { Permission(rawValue: "android.permission.CHANGE_COMPONENT_ENABLED_STATE") } + static var changeConfiguration: Permission { Permission(rawValue: "android.permission.CHANGE_CONFIGURATION") } + static var changeNetworkState: Permission { Permission(rawValue: "android.permission.CHANGE_NETWORK_STATE") } + static var changeWifiMulticastState: Permission { Permission(rawValue: "android.permission.CHANGE_WIFI_MULTICAST_STATE") } + static var changeWifiState: Permission { Permission(rawValue: "android.permission.CHANGE_WIFI_STATE") } + static var clearAppCache: Permission { Permission(rawValue: "android.permission.CLEAR_APP_CACHE") } + static var controlLocationUpdates: Permission { Permission(rawValue: "android.permission.CONTROL_LOCATION_UPDATES") } + static var deleteCacheFiles: Permission { Permission(rawValue: "android.permission.DELETE_CACHE_FILES") } + static var deletePackages: Permission { Permission(rawValue: "android.permission.DELETE_PACKAGES") } + static var diagnostic: Permission { Permission(rawValue: "android.permission.DIAGNOSTIC") } + static var disableKeyguard: Permission { Permission(rawValue: "android.permission.DISABLE_KEYGUARD") } + static var dump: Permission { Permission(rawValue: "android.permission.DUMP") } + static var expandStatusBar: Permission { Permission(rawValue: "android.permission.EXPAND_STATUS_BAR") } + static var factoryTest: Permission { Permission(rawValue: "android.permission.FACTORY_TEST") } @available(Android 28, *) - static let foregroundService = Permission(rawValue: javaClass.FOREGROUND_SERVICE) - + static var foregroundService: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE") } @available(Android 34, *) - static let foregroundServiceCamera = Permission(rawValue: javaClass.FOREGROUND_SERVICE_CAMERA) - + static var foregroundServiceCamera: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_CAMERA") } @available(Android 34, *) - static let foregroundServiceConnectedDevice = Permission(rawValue: javaClass.FOREGROUND_SERVICE_CONNECTED_DEVICE) - + static var foregroundServiceConnectedDevice: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE") } @available(Android 34, *) - static let foregroundServiceDataSync = Permission(rawValue: javaClass.FOREGROUND_SERVICE_DATA_SYNC) - + static var foregroundServiceDataSync: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_DATA_SYNC") } @available(Android 34, *) - static let foregroundServiceHealth = Permission(rawValue: javaClass.FOREGROUND_SERVICE_HEALTH) - + static var foregroundServiceHealth: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_HEALTH") } @available(Android 34, *) - static let foregroundServiceLocation = Permission(rawValue: javaClass.FOREGROUND_SERVICE_LOCATION) - + static var foregroundServiceLocation: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_LOCATION") } @available(Android 34, *) - static let foregroundServiceMediaPlayback = Permission(rawValue: javaClass.FOREGROUND_SERVICE_MEDIA_PLAYBACK) - + static var foregroundServiceMediaPlayback: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK") } @available(Android 34, *) - static let foregroundServiceMediaProjection = Permission(rawValue: javaClass.FOREGROUND_SERVICE_MEDIA_PROJECTION) - + static var foregroundServiceMediaProjection: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION") } @available(Android 34, *) - static let foregroundServiceMicrophone = Permission(rawValue: javaClass.FOREGROUND_SERVICE_MICROPHONE) - + static var foregroundServiceMicrophone: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_MICROPHONE") } @available(Android 34, *) - static let foregroundServicePhoneCall = Permission(rawValue: javaClass.FOREGROUND_SERVICE_PHONE_CALL) - + static var foregroundServicePhoneCall: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_PHONE_CALL") } @available(Android 34, *) - static let foregroundServiceRemoteMessaging = Permission(rawValue: javaClass.FOREGROUND_SERVICE_REMOTE_MESSAGING) - + static var foregroundServiceRemoteMessaging: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING") } @available(Android 34, *) - static let foregroundServiceSpecialUse = Permission(rawValue: javaClass.FOREGROUND_SERVICE_SPECIAL_USE) - + static var foregroundServiceSpecialUse: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_SPECIAL_USE") } @available(Android 34, *) - static let foregroundServiceSystemExempted = Permission(rawValue: javaClass.FOREGROUND_SERVICE_SYSTEM_EXEMPTED) - - static let getAccounts = Permission(rawValue: javaClass.GET_ACCOUNTS) - - static let getAccountsPrivileged = Permission(rawValue: javaClass.GET_ACCOUNTS_PRIVILEGED) - - static let getPackageSize = Permission(rawValue: javaClass.GET_PACKAGE_SIZE) - - static let globalSearch = Permission(rawValue: javaClass.GLOBAL_SEARCH) - - static let installLocationProvider = Permission(rawValue: javaClass.INSTALL_LOCATION_PROVIDER) - - static let installPackages = Permission(rawValue: javaClass.INSTALL_PACKAGES) - - static let installShortcut = Permission(rawValue: javaClass.INSTALL_SHORTCUT) - - static let instantAppForegroundService = Permission(rawValue: javaClass.INSTANT_APP_FOREGROUND_SERVICE) - - static let internet = Permission(rawValue: javaClass.INTERNET) - - static let killBackgroundProcesses = Permission(rawValue: javaClass.KILL_BACKGROUND_PROCESSES) - - static let locationHardware = Permission(rawValue: javaClass.LOCATION_HARDWARE) - - static let manageDocuments = Permission(rawValue: javaClass.MANAGE_DOCUMENTS) - - static let manageOwnCalls = Permission(rawValue: javaClass.MANAGE_OWN_CALLS) - + static var foregroundServiceSystemExempted: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED") } + static var getAccounts: Permission { Permission(rawValue: "android.permission.GET_ACCOUNTS") } + static var getAccountsPrivileged: Permission { Permission(rawValue: "android.permission.GET_ACCOUNTS_PRIVILEGED") } + static var getPackageSize: Permission { Permission(rawValue: "android.permission.GET_PACKAGE_SIZE") } + static var globalSearch: Permission { Permission(rawValue: "android.permission.GLOBAL_SEARCH") } + static var installLocationProvider: Permission { Permission(rawValue: "android.permission.INSTALL_LOCATION_PROVIDER") } + static var installPackages: Permission { Permission(rawValue: "android.permission.INSTALL_PACKAGES") } + static var installShortcut: Permission { Permission(rawValue: "com.android.launcher.permission.INSTALL_SHORTCUT") } + static var instantAppForegroundService: Permission { Permission(rawValue: "android.permission.INSTANT_APP_FOREGROUND_SERVICE") } + static var internet: Permission { Permission(rawValue: "android.permission.INTERNET") } + static var killBackgroundProcesses: Permission { Permission(rawValue: "android.permission.KILL_BACKGROUND_PROCESSES") } + static var locationHardware: Permission { Permission(rawValue: "android.permission.LOCATION_HARDWARE") } + static var manageDocuments: Permission { Permission(rawValue: "android.permission.MANAGE_DOCUMENTS") } + static var manageOwnCalls: Permission { Permission(rawValue: "android.permission.MANAGE_OWN_CALLS") } @available(Android 30, *) - static let manageExternalStorage = Permission(rawValue: javaClass.MANAGE_EXTERNAL_STORAGE) - + static var manageExternalStorage: Permission { Permission(rawValue: "android.permission.MANAGE_EXTERNAL_STORAGE") } @available(Android 31, *) - static let manageMedia = Permission(rawValue: javaClass.MANAGE_MEDIA) - + static var manageMedia: Permission { Permission(rawValue: "android.permission.MANAGE_MEDIA") } @available(Android 31, *) - static let manageOngoingCalls = Permission(rawValue: javaClass.MANAGE_ONGOING_CALLS) - - static let masterClear = Permission(rawValue: javaClass.MASTER_CLEAR) - - static let mediaContentControl = Permission(rawValue: javaClass.MEDIA_CONTENT_CONTROL) - - static let modifyAudioSettings = Permission(rawValue: javaClass.MODIFY_AUDIO_SETTINGS) - - static let modifyPhoneState = Permission(rawValue: javaClass.MODIFY_PHONE_STATE) - - static let mountFormatFilesystems = Permission(rawValue: javaClass.MOUNT_FORMAT_FILESYSTEMS) - - static let mountUnmountFilesystems = Permission(rawValue: javaClass.MOUNT_UNMOUNT_FILESYSTEMS) - - static let nfc = Permission(rawValue: javaClass.NFC) - - static let nfcTransactionEvent = Permission(rawValue: javaClass.NFC_TRANSACTION_EVENT) - + static var manageOngoingCalls: Permission { Permission(rawValue: "android.permission.MANAGE_ONGOING_CALLS") } + static var masterClear: Permission { Permission(rawValue: "android.permission.MASTER_CLEAR") } + static var mediaContentControl: Permission { Permission(rawValue: "android.permission.MEDIA_CONTENT_CONTROL") } + static var modifyAudioSettings: Permission { Permission(rawValue: "android.permission.MODIFY_AUDIO_SETTINGS") } + static var modifyPhoneState: Permission { Permission(rawValue: "android.permission.MODIFY_PHONE_STATE") } + static var mountFormatFilesystems: Permission { Permission(rawValue: "android.permission.MOUNT_FORMAT_FILESYSTEMS") } + static var mountUnmountFilesystems: Permission { Permission(rawValue: "android.permission.MOUNT_UNMOUNT_FILESYSTEMS") } + static var nfc: Permission { Permission(rawValue: "android.permission.NFC") } + static var nfcTransactionEvent: Permission { Permission(rawValue: "android.permission.NFC_TRANSACTION_EVENT") } @available(Android 33, *) - static let nfcPreferredPaymentInfo = Permission(rawValue: javaClass.NFC_PREFERRED_PAYMENT_INFO) - + static var nfcPreferredPaymentInfo: Permission { Permission(rawValue: "android.permission.NFC_PREFERRED_PAYMENT_INFO") } @available(Android 33, *) - static let nearbyWifiDevices = Permission(rawValue: javaClass.NEARBY_WIFI_DEVICES) - - static let packageUsageStats = Permission(rawValue: javaClass.PACKAGE_USAGE_STATS) - + static var nearbyWifiDevices: Permission { Permission(rawValue: "android.permission.NEARBY_WIFI_DEVICES") } + static var packageUsageStats: Permission { Permission(rawValue: "android.permission.PACKAGE_USAGE_STATS") } @available(Android 33, *) - static let postNotifications = Permission(rawValue: javaClass.POST_NOTIFICATIONS) - - static let processOutgoingCalls = Permission(rawValue: javaClass.PROCESS_OUTGOING_CALLS) - - static let readCalendar = Permission(rawValue: javaClass.READ_CALENDAR) - - static let readCallLog = Permission(rawValue: javaClass.READ_CALL_LOG) - - static let readContacts = Permission(rawValue: javaClass.READ_CONTACTS) - - static let readExternalStorage = Permission(rawValue: javaClass.READ_EXTERNAL_STORAGE) - + static var postNotifications: Permission { Permission(rawValue: "android.permission.POST_NOTIFICATIONS") } + static var processOutgoingCalls: Permission { Permission(rawValue: "android.permission.PROCESS_OUTGOING_CALLS") } + static var readCalendar: Permission { Permission(rawValue: "android.permission.READ_CALENDAR") } + static var readCallLog: Permission { Permission(rawValue: "android.permission.READ_CALL_LOG") } + static var readContacts: Permission { Permission(rawValue: "android.permission.READ_CONTACTS") } + static var readExternalStorage: Permission { Permission(rawValue: "android.permission.READ_EXTERNAL_STORAGE") } @available(Android 33, *) - static let readMediaAudio = Permission(rawValue: javaClass.READ_MEDIA_AUDIO) - + static var readMediaAudio: Permission { Permission(rawValue: "android.permission.READ_MEDIA_AUDIO") } @available(Android 33, *) - static let readMediaImages = Permission(rawValue: javaClass.READ_MEDIA_IMAGES) - + static var readMediaImages: Permission { Permission(rawValue: "android.permission.READ_MEDIA_IMAGES") } @available(Android 33, *) - static let readMediaVideo = Permission(rawValue: javaClass.READ_MEDIA_VIDEO) - + static var readMediaVideo: Permission { Permission(rawValue: "android.permission.READ_MEDIA_VIDEO") } @available(Android 34, *) - static let readMediaVisualUserSelected = Permission(rawValue: javaClass.READ_MEDIA_VISUAL_USER_SELECTED) - + static var readMediaVisualUserSelected: Permission { Permission(rawValue: "android.permission.READ_MEDIA_VISUAL_USER_SELECTED") } @available(Android 21, *) - static let readFrameBuffer = Permission(rawValue: javaClass.READ_FRAME_BUFFER) - - static let readLogs = Permission(rawValue: javaClass.READ_LOGS) - + static var readFrameBuffer: Permission { Permission(rawValue: "android.permission.READ_FRAME_BUFFER") } + static var readLogs: Permission { Permission(rawValue: "android.permission.READ_LOGS") } @available(Android 26, *) - static let readPhoneNumbers = Permission(rawValue: javaClass.READ_PHONE_NUMBERS) - - static let readPhoneState = Permission(rawValue: javaClass.READ_PHONE_STATE) - - static let readSms = Permission(rawValue: javaClass.READ_SMS) - - static let readSyncSettings = Permission(rawValue: javaClass.READ_SYNC_SETTINGS) - - static let readSyncStats = Permission(rawValue: javaClass.READ_SYNC_STATS) - - static let readVoicemail = Permission(rawValue: javaClass.READ_VOICEMAIL) - - static let reboot = Permission(rawValue: javaClass.REBOOT) - - static let receiveBootCompleted = Permission(rawValue: javaClass.RECEIVE_BOOT_COMPLETED) - - static let receiveMms = Permission(rawValue: javaClass.RECEIVE_MMS) - - static let receiveSms = Permission(rawValue: javaClass.RECEIVE_SMS) - - static let receiveWapPush = Permission(rawValue: javaClass.RECEIVE_WAP_PUSH) - - static let recordAudio = Permission(rawValue: javaClass.RECORD_AUDIO) - - static let reorderTasks = Permission(rawValue: javaClass.REORDER_TASKS) - - static let requestCompanionRunInBackground = Permission(rawValue: javaClass.REQUEST_COMPANION_RUN_IN_BACKGROUND) - - static let requestCompanionUseDataInBackground = Permission(rawValue: javaClass.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND) - - static let requestDeletePackages = Permission(rawValue: javaClass.REQUEST_DELETE_PACKAGES) - - static let requestIgnoreBatteryOptimizations = Permission(rawValue: javaClass.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) - - static let requestInstallPackages = Permission(rawValue: javaClass.REQUEST_INSTALL_PACKAGES) - + static var readPhoneNumbers: Permission { Permission(rawValue: "android.permission.READ_PHONE_NUMBERS") } + static var readPhoneState: Permission { Permission(rawValue: "android.permission.READ_PHONE_STATE") } + static var readSms: Permission { Permission(rawValue: "android.permission.READ_SMS") } + static var readSyncSettings: Permission { Permission(rawValue: "android.permission.READ_SYNC_SETTINGS") } + static var readSyncStats: Permission { Permission(rawValue: "android.permission.READ_SYNC_STATS") } + static var readVoicemail: Permission { Permission(rawValue: "com.android.voicemail.permission.READ_VOICEMAIL") } + static var reboot: Permission { Permission(rawValue: "android.permission.REBOOT") } + static var receiveBootCompleted: Permission { Permission(rawValue: "android.permission.RECEIVE_BOOT_COMPLETED") } + static var receiveMms: Permission { Permission(rawValue: "android.permission.RECEIVE_MMS") } + static var receiveSms: Permission { Permission(rawValue: "android.permission.RECEIVE_SMS") } + static var receiveWapPush: Permission { Permission(rawValue: "android.permission.RECEIVE_WAP_PUSH") } + static var recordAudio: Permission { Permission(rawValue: "android.permission.RECORD_AUDIO") } + static var reorderTasks: Permission { Permission(rawValue: "android.permission.REORDER_TASKS") } + static var requestCompanionRunInBackground: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND") } + static var requestCompanionUseDataInBackground: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND") } + static var requestDeletePackages: Permission { Permission(rawValue: "android.permission.REQUEST_DELETE_PACKAGES") } + static var requestIgnoreBatteryOptimizations: Permission { Permission(rawValue: "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS") } + static var requestInstallPackages: Permission { Permission(rawValue: "android.permission.REQUEST_INSTALL_PACKAGES") } @available(Android 31, *) - static let requestPasswordComplexity = Permission(rawValue: javaClass.REQUEST_PASSWORD_COMPLEXITY) - + static var requestPasswordComplexity: Permission { Permission(rawValue: "android.permission.REQUEST_PASSWORD_COMPLEXITY") } @available(Android 31, *) - static let scheduleExactAlarm = Permission(rawValue: javaClass.SCHEDULE_EXACT_ALARM) - - static let sendRespondViaMessage = Permission(rawValue: javaClass.SEND_RESPOND_VIA_MESSAGE) - - static let sendSms = Permission(rawValue: javaClass.SEND_SMS) - - static let setAlarm = Permission(rawValue: javaClass.SET_ALARM) - - static let setAlwaysFinish = Permission(rawValue: javaClass.SET_ALWAYS_FINISH) - - static let setAnimationScale = Permission(rawValue: javaClass.SET_ANIMATION_SCALE) - - static let setDebugApp = Permission(rawValue: javaClass.SET_DEBUG_APP) - - static let setProcessLimit = Permission(rawValue: javaClass.SET_PROCESS_LIMIT) - - static let setTime = Permission(rawValue: javaClass.SET_TIME) - - static let setTimeZone = Permission(rawValue: javaClass.SET_TIME_ZONE) - - static let setWallpaper = Permission(rawValue: javaClass.SET_WALLPAPER) - - static let setWallpaperHints = Permission(rawValue: javaClass.SET_WALLPAPER_HINTS) - - static let signalPersistentProcesses = Permission(rawValue: javaClass.SIGNAL_PERSISTENT_PROCESSES) - - static let statusBar = Permission(rawValue: javaClass.STATUS_BAR) - - static let systemAlertWindow = Permission(rawValue: javaClass.SYSTEM_ALERT_WINDOW) - - static let transmitIr = Permission(rawValue: javaClass.TRANSMIT_IR) - - static let uninstallShortcut = Permission(rawValue: javaClass.UNINSTALL_SHORTCUT) - - static let updateDeviceStats = Permission(rawValue: javaClass.UPDATE_DEVICE_STATS) - - static let useBiometric = Permission(rawValue: javaClass.USE_BIOMETRIC) - + static var scheduleExactAlarm: Permission { Permission(rawValue: "android.permission.SCHEDULE_EXACT_ALARM") } + static var sendRespondViaMessage: Permission { Permission(rawValue: "android.permission.SEND_RESPOND_VIA_MESSAGE") } + static var sendSms: Permission { Permission(rawValue: "android.permission.SEND_SMS") } + static var setAlarm: Permission { Permission(rawValue: "com.android.alarm.permission.SET_ALARM") } + static var setAlwaysFinish: Permission { Permission(rawValue: "android.permission.SET_ALWAYS_FINISH") } + static var setAnimationScale: Permission { Permission(rawValue: "android.permission.SET_ANIMATION_SCALE") } + static var setDebugApp: Permission { Permission(rawValue: "android.permission.SET_DEBUG_APP") } + static var setProcessLimit: Permission { Permission(rawValue: "android.permission.SET_PROCESS_LIMIT") } + static var setTime: Permission { Permission(rawValue: "android.permission.SET_TIME") } + static var setTimeZone: Permission { Permission(rawValue: "android.permission.SET_TIME_ZONE") } + static var setWallpaper: Permission { Permission(rawValue: "android.permission.SET_WALLPAPER") } + static var setWallpaperHints: Permission { Permission(rawValue: "android.permission.SET_WALLPAPER_HINTS") } + static var signalPersistentProcesses: Permission { Permission(rawValue: "android.permission.SIGNAL_PERSISTENT_PROCESSES") } + static var statusBar: Permission { Permission(rawValue: "android.permission.STATUS_BAR") } + static var systemAlertWindow: Permission { Permission(rawValue: "android.permission.SYSTEM_ALERT_WINDOW") } + static var transmitIr: Permission { Permission(rawValue: "android.permission.TRANSMIT_IR") } + static var uninstallShortcut: Permission { Permission(rawValue: "com.android.launcher.permission.UNINSTALL_SHORTCUT") } + static var updateDeviceStats: Permission { Permission(rawValue: "android.permission.UPDATE_DEVICE_STATS") } + static var useBiometric: Permission { Permission(rawValue: "android.permission.USE_BIOMETRIC") } @available(Android 33, *) - static let useExactAlarm = Permission(rawValue: javaClass.USE_EXACT_ALARM) - + static var useExactAlarm: Permission { Permission(rawValue: "android.permission.USE_EXACT_ALARM") } @available(Android 29, *) - static let useFullScreenIntent = Permission(rawValue: javaClass.USE_FULL_SCREEN_INTENT) - - static let useSip = Permission(rawValue: javaClass.USE_SIP) - + static var useFullScreenIntent: Permission { Permission(rawValue: "android.permission.USE_FULL_SCREEN_INTENT") } + static var useSip: Permission { Permission(rawValue: "android.permission.USE_SIP") } @available(Android 31, *) - static let uwbRanging = Permission(rawValue: javaClass.UWB_RANGING) - - static let vibrate = Permission(rawValue: javaClass.VIBRATE) - - static let wakeLock = Permission(rawValue: javaClass.WAKE_LOCK) - - static let writeApnSettings = Permission(rawValue: javaClass.WRITE_APN_SETTINGS) - - static let writeCalendar = Permission(rawValue: javaClass.WRITE_CALENDAR) - - static let writeCallLog = Permission(rawValue: javaClass.WRITE_CALL_LOG) - - static let writeContacts = Permission(rawValue: javaClass.WRITE_CONTACTS) - - static let writeExternalStorage = Permission(rawValue: javaClass.WRITE_EXTERNAL_STORAGE) - - static let writeGservices = Permission(rawValue: javaClass.WRITE_GSERVICES) - - static let writeSecureSettings = Permission(rawValue: javaClass.WRITE_SECURE_SETTINGS) - - static let writeSettings = Permission(rawValue: javaClass.WRITE_SETTINGS) - - static let writeSyncSettings = Permission(rawValue: javaClass.WRITE_SYNC_SETTINGS) - - static let writeVoicemail = Permission(rawValue: javaClass.WRITE_VOICEMAIL) - + static var uwbRanging: Permission { Permission(rawValue: "android.permission.UWB_RANGING") } + static var vibrate: Permission { Permission(rawValue: "android.permission.VIBRATE") } + static var wakeLock: Permission { Permission(rawValue: "android.permission.WAKE_LOCK") } + static var writeApnSettings: Permission { Permission(rawValue: "android.permission.WRITE_APN_SETTINGS") } + static var writeCalendar: Permission { Permission(rawValue: "android.permission.WRITE_CALENDAR") } + static var writeCallLog: Permission { Permission(rawValue: "android.permission.WRITE_CALL_LOG") } + static var writeContacts: Permission { Permission(rawValue: "android.permission.WRITE_CONTACTS") } + static var writeExternalStorage: Permission { Permission(rawValue: "android.permission.WRITE_EXTERNAL_STORAGE") } + static var writeGservices: Permission { Permission(rawValue: "android.permission.WRITE_GSERVICES") } + static var writeSecureSettings: Permission { Permission(rawValue: "android.permission.WRITE_SECURE_SETTINGS") } + static var writeSettings: Permission { Permission(rawValue: "android.permission.WRITE_SETTINGS") } + static var writeSyncSettings: Permission { Permission(rawValue: "android.permission.WRITE_SYNC_SETTINGS") } + static var writeVoicemail: Permission { Permission(rawValue: "com.android.voicemail.permission.WRITE_VOICEMAIL") } @available(Android 31, *) - static let accessBlobsAcrossUsers = Permission(rawValue: javaClass.ACCESS_BLOBS_ACROSS_USERS) - + static var accessBlobsAcrossUsers: Permission { Permission(rawValue: "android.permission.ACCESS_BLOBS_ACROSS_USERS") } @available(Android 29, *) - static let bindCallRedirectionService = Permission(rawValue: javaClass.BIND_CALL_REDIRECTION_SERVICE) - + static var bindCallRedirectionService: Permission { Permission(rawValue: "android.permission.BIND_CALL_REDIRECTION_SERVICE") } @available(Android 29, *) - static let bindCarrierMessagingClientService = Permission(rawValue: javaClass.BIND_CARRIER_MESSAGING_CLIENT_SERVICE) - - static let bindCarrierMessagingService = Permission(rawValue: javaClass.BIND_CARRIER_MESSAGING_SERVICE) - + static var bindCarrierMessagingClientService: Permission { Permission(rawValue: "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE") } + static var bindCarrierMessagingService: Permission { Permission(rawValue: "android.permission.BIND_CARRIER_MESSAGING_SERVICE") } @available(Android 31, *) - static let bindCompanionDeviceService = Permission(rawValue: javaClass.BIND_COMPANION_DEVICE_SERVICE) - + static var bindCompanionDeviceService: Permission { Permission(rawValue: "android.permission.BIND_COMPANION_DEVICE_SERVICE") } @available(Android 30, *) - static let bindControls = Permission(rawValue: javaClass.BIND_CONTROLS) - + static var bindControls: Permission { Permission(rawValue: "android.permission.BIND_CONTROLS") } @available(Android 30, *) - static let bindQuickAccessWalletService = Permission(rawValue: javaClass.BIND_QUICK_ACCESS_WALLET_SERVICE) - + static var bindQuickAccessWalletService: Permission { Permission(rawValue: "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE") } @available(Android 33, *) - static let bindTvInteractiveApp = Permission(rawValue: javaClass.BIND_TV_INTERACTIVE_APP) - + static var bindTvInteractiveApp: Permission { Permission(rawValue: "android.permission.BIND_TV_INTERACTIVE_APP") } @available(Android 29, *) - static let callCompanionApp = Permission(rawValue: javaClass.CALL_COMPANION_APP) - + static var callCompanionApp: Permission { Permission(rawValue: "android.permission.CALL_COMPANION_APP") } @available(Android 33, *) - static let deliverCompanionMessages = Permission(rawValue: javaClass.DELIVER_COMPANION_MESSAGES) - - static let getTasks = Permission(rawValue: javaClass.GET_TASKS) - + static var deliverCompanionMessages: Permission { Permission(rawValue: "android.permission.DELIVER_COMPANION_MESSAGES") } + static var getTasks: Permission { Permission(rawValue: "android.permission.GET_TASKS") } @available(Android 31, *) - static let hideOverlayWindows = Permission(rawValue: javaClass.HIDE_OVERLAY_WINDOWS) - + static var hideOverlayWindows: Permission { Permission(rawValue: "android.permission.HIDE_OVERLAY_WINDOWS") } @available(Android 31, *) - static let highSamplingRateSensors = Permission(rawValue: javaClass.HIGH_SAMPLING_RATE_SENSORS) - + static var highSamplingRateSensors: Permission { Permission(rawValue: "android.permission.HIGH_SAMPLING_RATE_SENSORS") } @available(Android 30, *) - static let interactAcrossProfiles = Permission(rawValue: javaClass.INTERACT_ACROSS_PROFILES) - + static var interactAcrossProfiles: Permission { Permission(rawValue: "android.permission.INTERACT_ACROSS_PROFILES") } @available(Android 32, *) - static let launchMultiPaneSettingsDeepLink = Permission(rawValue: javaClass.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK) - + static var launchMultiPaneSettingsDeepLink: Permission { Permission(rawValue: "android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK") } @available(Android 30, *) - static let loaderUsageStats = Permission(rawValue: javaClass.LOADER_USAGE_STATS) - + static var loaderUsageStats: Permission { Permission(rawValue: "android.permission.LOADER_USAGE_STATS") } @available(Android 33, *) - static let manageWifiInterfaces = Permission(rawValue: javaClass.MANAGE_WIFI_INTERFACES) - + static var manageWifiInterfaces: Permission { Permission(rawValue: "android.permission.MANAGE_WIFI_INTERFACES") } @available(Android 33, *) - static let manageWifiNetworkSelection = Permission(rawValue: javaClass.MANAGE_WIFI_NETWORK_SELECTION) - + static var manageWifiNetworkSelection: Permission { Permission(rawValue: "android.permission.MANAGE_WIFI_NETWORK_SELECTION") } @available(Android 33, *) - static let overrideWifiConfig = Permission(rawValue: javaClass.OVERRIDE_WIFI_CONFIG) - - static let persistentActivity = Permission(rawValue: javaClass.PERSISTENT_ACTIVITY) - + static var overrideWifiConfig: Permission { Permission(rawValue: "android.permission.OVERRIDE_WIFI_CONFIG") } + static var persistentActivity: Permission { Permission(rawValue: "android.permission.PERSISTENT_ACTIVITY") } @available(Android 30, *) - static let queryAllPackages = Permission(rawValue: javaClass.QUERY_ALL_PACKAGES) - + static var queryAllPackages: Permission { Permission(rawValue: "android.permission.QUERY_ALL_PACKAGES") } @available(Android 33, *) - static let readAssistantAppSearchData = Permission(rawValue: javaClass.READ_ASSISTANT_APP_SEARCH_DATA) - + static var readAssistantAppSearchData: Permission { Permission(rawValue: "android.permission.READ_ASSISTANT_APP_SEARCH_DATA") } @available(Android 33, *) - static let readBasicPhoneState = Permission(rawValue: javaClass.READ_BASIC_PHONE_STATE) - + static var readBasicPhoneState: Permission { Permission(rawValue: "android.permission.READ_BASIC_PHONE_STATE") } @available(Android 33, *) - static let readHomeAppSearchData = Permission(rawValue: javaClass.READ_HOME_APP_SEARCH_DATA) - - static let readInputState = Permission(rawValue: javaClass.READ_INPUT_STATE) - + static var readHomeAppSearchData: Permission { Permission(rawValue: "android.permission.READ_HOME_APP_SEARCH_DATA") } + static var readInputState: Permission { Permission(rawValue: "android.permission.READ_INPUT_STATE") } @available(Android 33, *) - static let readNearbyStreamingPolicy = Permission(rawValue: javaClass.READ_NEARBY_STREAMING_POLICY) - + static var readNearbyStreamingPolicy: Permission { Permission(rawValue: "android.permission.READ_NEARBY_STREAMING_POLICY") } @available(Android 30, *) - static let readPrecisePhoneState = Permission(rawValue: javaClass.READ_PRECISE_PHONE_STATE) - + static var readPrecisePhoneState: Permission { Permission(rawValue: "android.permission.READ_PRECISE_PHONE_STATE") } @available(Android 33, *) - static let requestCompanionProfileAppStreaming = Permission(rawValue: javaClass.REQUEST_COMPANION_PROFILE_APP_STREAMING) - + static var requestCompanionProfileAppStreaming: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_PROFILE_APP_STREAMING") } @available(Android 33, *) - static let requestCompanionProfileAutomotiveProjection = Permission(rawValue: javaClass.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION) - + static var requestCompanionProfileAutomotiveProjection: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION") } @available(Android 33, *) - static let requestCompanionProfileComputer = Permission(rawValue: javaClass.REQUEST_COMPANION_PROFILE_COMPUTER) - + static var requestCompanionProfileComputer: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_PROFILE_COMPUTER") } @available(Android 31, *) - static let requestCompanionProfileWatch = Permission(rawValue: javaClass.REQUEST_COMPANION_PROFILE_WATCH) - + static var requestCompanionProfileWatch: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_PROFILE_WATCH") } @available(Android 33, *) - static let requestCompanionSelfManaged = Permission(rawValue: javaClass.REQUEST_COMPANION_SELF_MANAGED) - + static var requestCompanionSelfManaged: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_SELF_MANAGED") } @available(Android 31, *) - static let requestCompanionStartForegroundServicesFromBackground = Permission(rawValue: javaClass.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND) - + static var requestCompanionStartForegroundServicesFromBackground: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND") } @available(Android 31, *) - static let requestObserveCompanionDevicePresence = Permission(rawValue: javaClass.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE) - - static let restartPackages = Permission(rawValue: javaClass.RESTART_PACKAGES) - - static let setPreferredApplications = Permission(rawValue: javaClass.SET_PREFERRED_APPLICATIONS) - + static var requestObserveCompanionDevicePresence: Permission { Permission(rawValue: "android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") } + static var restartPackages: Permission { Permission(rawValue: "android.permission.RESTART_PACKAGES") } + static var setPreferredApplications: Permission { Permission(rawValue: "android.permission.SET_PREFERRED_APPLICATIONS") } @available(Android 29, *) - static let smsFinancialTransactions = Permission(rawValue: javaClass.SMS_FINANCIAL_TRANSACTIONS) - + static var smsFinancialTransactions: Permission { Permission(rawValue: "android.permission.SMS_FINANCIAL_TRANSACTIONS") } @available(Android 31, *) - static let startForegroundServicesFromBackground = Permission(rawValue: javaClass.START_FOREGROUND_SERVICES_FROM_BACKGROUND) - + static var startForegroundServicesFromBackground: Permission { Permission(rawValue: "android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND") } @available(Android 33, *) - static let startViewAppFeatures = Permission(rawValue: javaClass.START_VIEW_APP_FEATURES) - + static var startViewAppFeatures: Permission { Permission(rawValue: "android.permission.START_VIEW_APP_FEATURES") } @available(Android 29, *) - static let startViewPermissionUsage = Permission(rawValue: javaClass.START_VIEW_PERMISSION_USAGE) - + static var startViewPermissionUsage: Permission { Permission(rawValue: "android.permission.START_VIEW_PERMISSION_USAGE") } @available(Android 33, *) - static let subscribeToKeyguardLockedState = Permission(rawValue: javaClass.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE) - + static var subscribeToKeyguardLockedState: Permission { Permission(rawValue: "android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE") } @available(Android 31, *) - static let updatePackagesWithoutUserAction = Permission(rawValue: javaClass.UPDATE_PACKAGES_WITHOUT_USER_ACTION) - + static var updatePackagesWithoutUserAction: Permission { Permission(rawValue: "android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION") } @available(Android 23, *) - static let useFingerprint = Permission(rawValue: javaClass.USE_FINGERPRINT) - + static var useFingerprint: Permission { Permission(rawValue: "android.permission.USE_FINGERPRINT") } @available(Android 31, *) - static let useIccAuthWithDeviceIdentifier = Permission(rawValue: javaClass.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER) + static var useIccAuthWithDeviceIdentifier: Permission { Permission(rawValue: "android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER") } } From 9f6f7cfaa2a56c3b19edc20131159335d68242e6 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Thu, 26 Feb 2026 21:50:07 -0500 Subject: [PATCH 4/8] Add documentation --- Sources/AndroidManifest/Permission.swift | 1110 ++++++++++++++++++++++ 1 file changed, 1110 insertions(+) diff --git a/Sources/AndroidManifest/Permission.swift b/Sources/AndroidManifest/Permission.swift index 9b236791..8e213f90 100644 --- a/Sources/AndroidManifest/Permission.swift +++ b/Sources/AndroidManifest/Permission.swift @@ -18,304 +18,1414 @@ public struct Permission: RawRepresentable, Equatable, Hashable, Codable, Sendab public extension Permission { + /// Android manifest permission. + /// - Constant Value: `android.permission.ACCEPT_HANDOVER` + /// - Java Constant: `Manifest.permission.ACCEPT_HANDOVER` + /// - Added: Android 1+ + /// - SeeAlso: static var acceptHandover: Permission { Permission(rawValue: "android.permission.ACCEPT_HANDOVER") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ACCESS_CHECKIN_PROPERTIES` + /// - Java Constant: `Manifest.permission.ACCESS_CHECKIN_PROPERTIES` + /// - Added: Android 1+ + /// - SeeAlso: static var accessCheckinProperties: Permission { Permission(rawValue: "android.permission.ACCESS_CHECKIN_PROPERTIES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ACCESS_COARSE_LOCATION` + /// - Java Constant: `Manifest.permission.ACCESS_COARSE_LOCATION` + /// - Added: Android 1+ + /// - SeeAlso: static var accessCoarseLocation: Permission { Permission(rawValue: "android.permission.ACCESS_COARSE_LOCATION") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ACCESS_FINE_LOCATION` + /// - Java Constant: `Manifest.permission.ACCESS_FINE_LOCATION` + /// - Added: Android 1+ + /// - SeeAlso: static var accessFineLocation: Permission { Permission(rawValue: "android.permission.ACCESS_FINE_LOCATION") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ACCESS_LOCATION_EXTRA_COMMANDS` + /// - Java Constant: `Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS` + /// - Added: Android 1+ + /// - SeeAlso: static var accessLocationExtraCommands: Permission { Permission(rawValue: "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ACCESS_NETWORK_STATE` + /// - Java Constant: `Manifest.permission.ACCESS_NETWORK_STATE` + /// - Added: Android 1+ + /// - SeeAlso: static var accessNetworkState: Permission { Permission(rawValue: "android.permission.ACCESS_NETWORK_STATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ACCESS_NOTIFICATION_POLICY` + /// - Java Constant: `Manifest.permission.ACCESS_NOTIFICATION_POLICY` + /// - Added: Android 1+ + /// - SeeAlso: static var accessNotificationPolicy: Permission { Permission(rawValue: "android.permission.ACCESS_NOTIFICATION_POLICY") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ACCESS_WIFI_STATE` + /// - Java Constant: `Manifest.permission.ACCESS_WIFI_STATE` + /// - Added: Android 1+ + /// - SeeAlso: static var accessWifiState: Permission { Permission(rawValue: "android.permission.ACCESS_WIFI_STATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ACCESS_BACKGROUND_LOCATION` + /// - Java Constant: `Manifest.permission.ACCESS_BACKGROUND_LOCATION` + /// - Added: Android 29+ + /// - SeeAlso: @available(Android 29, *) static var accessBackgroundLocation: Permission { Permission(rawValue: "android.permission.ACCESS_BACKGROUND_LOCATION") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ACCESS_MEDIA_LOCATION` + /// - Java Constant: `Manifest.permission.ACCESS_MEDIA_LOCATION` + /// - Added: Android 29+ + /// - SeeAlso: @available(Android 29, *) static var accessMediaLocation: Permission { Permission(rawValue: "android.permission.ACCESS_MEDIA_LOCATION") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ACCOUNT_MANAGER` + /// - Java Constant: `Manifest.permission.ACCOUNT_MANAGER` + /// - Added: Android 1+ + /// - SeeAlso: static var accountManager: Permission { Permission(rawValue: "android.permission.ACCOUNT_MANAGER") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ACTIVITY_RECOGNITION` + /// - Java Constant: `Manifest.permission.ACTIVITY_RECOGNITION` + /// - Added: Android 29+ + /// - SeeAlso: @available(Android 29, *) static var activityRecognition: Permission { Permission(rawValue: "android.permission.ACTIVITY_RECOGNITION") } + /// Android manifest permission. + /// - Constant Value: `com.android.voicemail.permission.ADD_VOICEMAIL` + /// - Java Constant: `Manifest.permission.ADD_VOICEMAIL` + /// - Added: Android 1+ + /// - SeeAlso: static var addVoicemail: Permission { Permission(rawValue: "com.android.voicemail.permission.ADD_VOICEMAIL") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ANSWER_PHONE_CALLS` + /// - Java Constant: `Manifest.permission.ANSWER_PHONE_CALLS` + /// - Added: Android 26+ + /// - SeeAlso: @available(Android 26, *) static var answerPhoneCalls: Permission { Permission(rawValue: "android.permission.ANSWER_PHONE_CALLS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BATTERY_STATS` + /// - Java Constant: `Manifest.permission.BATTERY_STATS` + /// - Added: Android 1+ + /// - SeeAlso: static var batteryStats: Permission { Permission(rawValue: "android.permission.BATTERY_STATS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_ACCESSIBILITY_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_ACCESSIBILITY_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindAccessibilityService: Permission { Permission(rawValue: "android.permission.BIND_ACCESSIBILITY_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_APPWIDGET` + /// - Java Constant: `Manifest.permission.BIND_APPWIDGET` + /// - Added: Android 1+ + /// - SeeAlso: static var bindAppwidget: Permission { Permission(rawValue: "android.permission.BIND_APPWIDGET") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_AUTOFILL_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_AUTOFILL_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindAutofillService: Permission { Permission(rawValue: "android.permission.BIND_AUTOFILL_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_CARRIER_SERVICES` + /// - Java Constant: `Manifest.permission.BIND_CARRIER_SERVICES` + /// - Added: Android 1+ + /// - SeeAlso: static var bindCarrierServices: Permission { Permission(rawValue: "android.permission.BIND_CARRIER_SERVICES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_CHOOSER_TARGET_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_CHOOSER_TARGET_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindChooserTargetService: Permission { Permission(rawValue: "android.permission.BIND_CHOOSER_TARGET_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_CONDITION_PROVIDER_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_CONDITION_PROVIDER_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindConditionProviderService: Permission { Permission(rawValue: "android.permission.BIND_CONDITION_PROVIDER_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_DEVICE_ADMIN` + /// - Java Constant: `Manifest.permission.BIND_DEVICE_ADMIN` + /// - Added: Android 1+ + /// - SeeAlso: static var bindDeviceAdmin: Permission { Permission(rawValue: "android.permission.BIND_DEVICE_ADMIN") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_DREAM_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_DREAM_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindDreamService: Permission { Permission(rawValue: "android.permission.BIND_DREAM_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_INCALL_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_INCALL_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindIncallService: Permission { Permission(rawValue: "android.permission.BIND_INCALL_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_INPUT_METHOD` + /// - Java Constant: `Manifest.permission.BIND_INPUT_METHOD` + /// - Added: Android 1+ + /// - SeeAlso: static var bindInputMethod: Permission { Permission(rawValue: "android.permission.BIND_INPUT_METHOD") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_MIDI_DEVICE_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_MIDI_DEVICE_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindMidiDeviceService: Permission { Permission(rawValue: "android.permission.BIND_MIDI_DEVICE_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_NFC_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_NFC_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindNfcService: Permission { Permission(rawValue: "android.permission.BIND_NFC_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_NOTIFICATION_LISTENER_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindNotificationListenerService: Permission { Permission(rawValue: "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_PRINT_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_PRINT_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindPrintService: Permission { Permission(rawValue: "android.permission.BIND_PRINT_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_QUICK_SETTINGS_TILE` + /// - Java Constant: `Manifest.permission.BIND_QUICK_SETTINGS_TILE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindQuickSettingsTile: Permission { Permission(rawValue: "android.permission.BIND_QUICK_SETTINGS_TILE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_REMOTEVIEWS` + /// - Java Constant: `Manifest.permission.BIND_REMOTEVIEWS` + /// - Added: Android 1+ + /// - SeeAlso: static var bindRemoteviews: Permission { Permission(rawValue: "android.permission.BIND_REMOTEVIEWS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_SCREENING_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_SCREENING_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindScreeningService: Permission { Permission(rawValue: "android.permission.BIND_SCREENING_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_TELECOM_CONNECTION_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_TELECOM_CONNECTION_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindTelecomConnectionService: Permission { Permission(rawValue: "android.permission.BIND_TELECOM_CONNECTION_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_TEXT_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_TEXT_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindTextService: Permission { Permission(rawValue: "android.permission.BIND_TEXT_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_TV_INPUT` + /// - Java Constant: `Manifest.permission.BIND_TV_INPUT` + /// - Added: Android 1+ + /// - SeeAlso: static var bindTvInput: Permission { Permission(rawValue: "android.permission.BIND_TV_INPUT") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_VISUAL_VOICEMAIL_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_VISUAL_VOICEMAIL_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindVisualVoicemailService: Permission { Permission(rawValue: "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_VOICE_INTERACTION` + /// - Java Constant: `Manifest.permission.BIND_VOICE_INTERACTION` + /// - Added: Android 1+ + /// - SeeAlso: static var bindVoiceInteraction: Permission { Permission(rawValue: "android.permission.BIND_VOICE_INTERACTION") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_VPN_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_VPN_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindVpnService: Permission { Permission(rawValue: "android.permission.BIND_VPN_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_VR_LISTENER_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_VR_LISTENER_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindVrListenerService: Permission { Permission(rawValue: "android.permission.BIND_VR_LISTENER_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_WALLPAPER` + /// - Java Constant: `Manifest.permission.BIND_WALLPAPER` + /// - Added: Android 1+ + /// - SeeAlso: static var bindWallpaper: Permission { Permission(rawValue: "android.permission.BIND_WALLPAPER") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BLUETOOTH` + /// - Java Constant: `Manifest.permission.BLUETOOTH` + /// - Added: Android 1+ + /// - SeeAlso: static var bluetooth: Permission { Permission(rawValue: "android.permission.BLUETOOTH") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BLUETOOTH_ADMIN` + /// - Java Constant: `Manifest.permission.BLUETOOTH_ADMIN` + /// - Added: Android 1+ + /// - SeeAlso: static var bluetoothAdmin: Permission { Permission(rawValue: "android.permission.BLUETOOTH_ADMIN") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BLUETOOTH_PRIVILEGED` + /// - Java Constant: `Manifest.permission.BLUETOOTH_PRIVILEGED` + /// - Added: Android 1+ + /// - SeeAlso: static var bluetoothPrivileged: Permission { Permission(rawValue: "android.permission.BLUETOOTH_PRIVILEGED") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BLUETOOTH_ADVERTISE` + /// - Java Constant: `Manifest.permission.BLUETOOTH_ADVERTISE` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var bluetoothAdvertise: Permission { Permission(rawValue: "android.permission.BLUETOOTH_ADVERTISE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BLUETOOTH_CONNECT` + /// - Java Constant: `Manifest.permission.BLUETOOTH_CONNECT` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var bluetoothConnect: Permission { Permission(rawValue: "android.permission.BLUETOOTH_CONNECT") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BLUETOOTH_SCAN` + /// - Java Constant: `Manifest.permission.BLUETOOTH_SCAN` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var bluetoothScan: Permission { Permission(rawValue: "android.permission.BLUETOOTH_SCAN") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BODY_SENSORS` + /// - Java Constant: `Manifest.permission.BODY_SENSORS` + /// - Added: Android 1+ + /// - SeeAlso: static var bodySensors: Permission { Permission(rawValue: "android.permission.BODY_SENSORS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BODY_SENSORS_BACKGROUND` + /// - Java Constant: `Manifest.permission.BODY_SENSORS_BACKGROUND` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var bodySensorsBackground: Permission { Permission(rawValue: "android.permission.BODY_SENSORS_BACKGROUND") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BROADCAST_PACKAGE_REMOVED` + /// - Java Constant: `Manifest.permission.BROADCAST_PACKAGE_REMOVED` + /// - Added: Android 1+ + /// - SeeAlso: static var broadcastPackageRemoved: Permission { Permission(rawValue: "android.permission.BROADCAST_PACKAGE_REMOVED") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BROADCAST_SMS` + /// - Java Constant: `Manifest.permission.BROADCAST_SMS` + /// - Added: Android 1+ + /// - SeeAlso: static var broadcastSms: Permission { Permission(rawValue: "android.permission.BROADCAST_SMS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BROADCAST_STICKY` + /// - Java Constant: `Manifest.permission.BROADCAST_STICKY` + /// - Added: Android 1+ + /// - SeeAlso: static var broadcastSticky: Permission { Permission(rawValue: "android.permission.BROADCAST_STICKY") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BROADCAST_WAP_PUSH` + /// - Java Constant: `Manifest.permission.BROADCAST_WAP_PUSH` + /// - Added: Android 1+ + /// - SeeAlso: static var broadcastWapPush: Permission { Permission(rawValue: "android.permission.BROADCAST_WAP_PUSH") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CALL_PHONE` + /// - Java Constant: `Manifest.permission.CALL_PHONE` + /// - Added: Android 1+ + /// - SeeAlso: static var callPhone: Permission { Permission(rawValue: "android.permission.CALL_PHONE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CALL_PRIVILEGED` + /// - Java Constant: `Manifest.permission.CALL_PRIVILEGED` + /// - Added: Android 1+ + /// - SeeAlso: static var callPrivileged: Permission { Permission(rawValue: "android.permission.CALL_PRIVILEGED") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CAMERA` + /// - Java Constant: `Manifest.permission.CAMERA` + /// - Added: Android 1+ + /// - SeeAlso: static var camera: Permission { Permission(rawValue: "android.permission.CAMERA") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CAPTURE_AUDIO_OUTPUT` + /// - Java Constant: `Manifest.permission.CAPTURE_AUDIO_OUTPUT` + /// - Added: Android 1+ + /// - SeeAlso: static var captureAudioOutput: Permission { Permission(rawValue: "android.permission.CAPTURE_AUDIO_OUTPUT") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CAPTURE_SECURE_VIDEO_OUTPUT` + /// - Java Constant: `Manifest.permission.CAPTURE_SECURE_VIDEO_OUTPUT` + /// - Added: Android 21+ + /// - SeeAlso: @available(Android 21, *) static var captureSecureVideoOutput: Permission { Permission(rawValue: "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CAPTURE_VIDEO_OUTPUT` + /// - Java Constant: `Manifest.permission.CAPTURE_VIDEO_OUTPUT` + /// - Added: Android 21+ + /// - SeeAlso: @available(Android 21, *) static var captureVideoOutput: Permission { Permission(rawValue: "android.permission.CAPTURE_VIDEO_OUTPUT") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CHANGE_COMPONENT_ENABLED_STATE` + /// - Java Constant: `Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE` + /// - Added: Android 1+ + /// - SeeAlso: static var changeComponentEnabledState: Permission { Permission(rawValue: "android.permission.CHANGE_COMPONENT_ENABLED_STATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CHANGE_CONFIGURATION` + /// - Java Constant: `Manifest.permission.CHANGE_CONFIGURATION` + /// - Added: Android 1+ + /// - SeeAlso: static var changeConfiguration: Permission { Permission(rawValue: "android.permission.CHANGE_CONFIGURATION") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CHANGE_NETWORK_STATE` + /// - Java Constant: `Manifest.permission.CHANGE_NETWORK_STATE` + /// - Added: Android 1+ + /// - SeeAlso: static var changeNetworkState: Permission { Permission(rawValue: "android.permission.CHANGE_NETWORK_STATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CHANGE_WIFI_MULTICAST_STATE` + /// - Java Constant: `Manifest.permission.CHANGE_WIFI_MULTICAST_STATE` + /// - Added: Android 1+ + /// - SeeAlso: static var changeWifiMulticastState: Permission { Permission(rawValue: "android.permission.CHANGE_WIFI_MULTICAST_STATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CHANGE_WIFI_STATE` + /// - Java Constant: `Manifest.permission.CHANGE_WIFI_STATE` + /// - Added: Android 1+ + /// - SeeAlso: static var changeWifiState: Permission { Permission(rawValue: "android.permission.CHANGE_WIFI_STATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CLEAR_APP_CACHE` + /// - Java Constant: `Manifest.permission.CLEAR_APP_CACHE` + /// - Added: Android 1+ + /// - SeeAlso: static var clearAppCache: Permission { Permission(rawValue: "android.permission.CLEAR_APP_CACHE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CONTROL_LOCATION_UPDATES` + /// - Java Constant: `Manifest.permission.CONTROL_LOCATION_UPDATES` + /// - Added: Android 1+ + /// - SeeAlso: static var controlLocationUpdates: Permission { Permission(rawValue: "android.permission.CONTROL_LOCATION_UPDATES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.DELETE_CACHE_FILES` + /// - Java Constant: `Manifest.permission.DELETE_CACHE_FILES` + /// - Added: Android 1+ + /// - SeeAlso: static var deleteCacheFiles: Permission { Permission(rawValue: "android.permission.DELETE_CACHE_FILES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.DELETE_PACKAGES` + /// - Java Constant: `Manifest.permission.DELETE_PACKAGES` + /// - Added: Android 1+ + /// - SeeAlso: static var deletePackages: Permission { Permission(rawValue: "android.permission.DELETE_PACKAGES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.DIAGNOSTIC` + /// - Java Constant: `Manifest.permission.DIAGNOSTIC` + /// - Added: Android 1+ + /// - SeeAlso: static var diagnostic: Permission { Permission(rawValue: "android.permission.DIAGNOSTIC") } + /// Android manifest permission. + /// - Constant Value: `android.permission.DISABLE_KEYGUARD` + /// - Java Constant: `Manifest.permission.DISABLE_KEYGUARD` + /// - Added: Android 1+ + /// - SeeAlso: static var disableKeyguard: Permission { Permission(rawValue: "android.permission.DISABLE_KEYGUARD") } + /// Android manifest permission. + /// - Constant Value: `android.permission.DUMP` + /// - Java Constant: `Manifest.permission.DUMP` + /// - Added: Android 1+ + /// - SeeAlso: static var dump: Permission { Permission(rawValue: "android.permission.DUMP") } + /// Android manifest permission. + /// - Constant Value: `android.permission.EXPAND_STATUS_BAR` + /// - Java Constant: `Manifest.permission.EXPAND_STATUS_BAR` + /// - Added: Android 1+ + /// - SeeAlso: static var expandStatusBar: Permission { Permission(rawValue: "android.permission.EXPAND_STATUS_BAR") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FACTORY_TEST` + /// - Java Constant: `Manifest.permission.FACTORY_TEST` + /// - Added: Android 1+ + /// - SeeAlso: static var factoryTest: Permission { Permission(rawValue: "android.permission.FACTORY_TEST") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE` + /// - Added: Android 28+ + /// - SeeAlso: @available(Android 28, *) static var foregroundService: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE_CAMERA` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE_CAMERA` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var foregroundServiceCamera: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_CAMERA") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var foregroundServiceConnectedDevice: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE_DATA_SYNC` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE_DATA_SYNC` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var foregroundServiceDataSync: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_DATA_SYNC") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE_HEALTH` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE_HEALTH` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var foregroundServiceHealth: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_HEALTH") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE_LOCATION` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE_LOCATION` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var foregroundServiceLocation: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_LOCATION") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var foregroundServiceMediaPlayback: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var foregroundServiceMediaProjection: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE_MICROPHONE` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE_MICROPHONE` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var foregroundServiceMicrophone: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_MICROPHONE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE_PHONE_CALL` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE_PHONE_CALL` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var foregroundServicePhoneCall: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_PHONE_CALL") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var foregroundServiceRemoteMessaging: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE_SPECIAL_USE` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE_SPECIAL_USE` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var foregroundServiceSpecialUse: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_SPECIAL_USE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED` + /// - Java Constant: `Manifest.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var foregroundServiceSystemExempted: Permission { Permission(rawValue: "android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED") } + /// Android manifest permission. + /// - Constant Value: `android.permission.GET_ACCOUNTS` + /// - Java Constant: `Manifest.permission.GET_ACCOUNTS` + /// - Added: Android 1+ + /// - SeeAlso: static var getAccounts: Permission { Permission(rawValue: "android.permission.GET_ACCOUNTS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.GET_ACCOUNTS_PRIVILEGED` + /// - Java Constant: `Manifest.permission.GET_ACCOUNTS_PRIVILEGED` + /// - Added: Android 1+ + /// - SeeAlso: static var getAccountsPrivileged: Permission { Permission(rawValue: "android.permission.GET_ACCOUNTS_PRIVILEGED") } + /// Android manifest permission. + /// - Constant Value: `android.permission.GET_PACKAGE_SIZE` + /// - Java Constant: `Manifest.permission.GET_PACKAGE_SIZE` + /// - Added: Android 1+ + /// - SeeAlso: static var getPackageSize: Permission { Permission(rawValue: "android.permission.GET_PACKAGE_SIZE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.GLOBAL_SEARCH` + /// - Java Constant: `Manifest.permission.GLOBAL_SEARCH` + /// - Added: Android 1+ + /// - SeeAlso: static var globalSearch: Permission { Permission(rawValue: "android.permission.GLOBAL_SEARCH") } + /// Android manifest permission. + /// - Constant Value: `android.permission.INSTALL_LOCATION_PROVIDER` + /// - Java Constant: `Manifest.permission.INSTALL_LOCATION_PROVIDER` + /// - Added: Android 1+ + /// - SeeAlso: static var installLocationProvider: Permission { Permission(rawValue: "android.permission.INSTALL_LOCATION_PROVIDER") } + /// Android manifest permission. + /// - Constant Value: `android.permission.INSTALL_PACKAGES` + /// - Java Constant: `Manifest.permission.INSTALL_PACKAGES` + /// - Added: Android 1+ + /// - SeeAlso: static var installPackages: Permission { Permission(rawValue: "android.permission.INSTALL_PACKAGES") } + /// Android manifest permission. + /// - Constant Value: `com.android.launcher.permission.INSTALL_SHORTCUT` + /// - Java Constant: `Manifest.permission.INSTALL_SHORTCUT` + /// - Added: Android 1+ + /// - SeeAlso: static var installShortcut: Permission { Permission(rawValue: "com.android.launcher.permission.INSTALL_SHORTCUT") } + /// Android manifest permission. + /// - Constant Value: `android.permission.INSTANT_APP_FOREGROUND_SERVICE` + /// - Java Constant: `Manifest.permission.INSTANT_APP_FOREGROUND_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var instantAppForegroundService: Permission { Permission(rawValue: "android.permission.INSTANT_APP_FOREGROUND_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.INTERNET` + /// - Java Constant: `Manifest.permission.INTERNET` + /// - Added: Android 1+ + /// - SeeAlso: static var internet: Permission { Permission(rawValue: "android.permission.INTERNET") } + /// Android manifest permission. + /// - Constant Value: `android.permission.KILL_BACKGROUND_PROCESSES` + /// - Java Constant: `Manifest.permission.KILL_BACKGROUND_PROCESSES` + /// - Added: Android 1+ + /// - SeeAlso: static var killBackgroundProcesses: Permission { Permission(rawValue: "android.permission.KILL_BACKGROUND_PROCESSES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.LOCATION_HARDWARE` + /// - Java Constant: `Manifest.permission.LOCATION_HARDWARE` + /// - Added: Android 1+ + /// - SeeAlso: static var locationHardware: Permission { Permission(rawValue: "android.permission.LOCATION_HARDWARE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MANAGE_DOCUMENTS` + /// - Java Constant: `Manifest.permission.MANAGE_DOCUMENTS` + /// - Added: Android 1+ + /// - SeeAlso: static var manageDocuments: Permission { Permission(rawValue: "android.permission.MANAGE_DOCUMENTS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MANAGE_OWN_CALLS` + /// - Java Constant: `Manifest.permission.MANAGE_OWN_CALLS` + /// - Added: Android 1+ + /// - SeeAlso: static var manageOwnCalls: Permission { Permission(rawValue: "android.permission.MANAGE_OWN_CALLS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MANAGE_EXTERNAL_STORAGE` + /// - Java Constant: `Manifest.permission.MANAGE_EXTERNAL_STORAGE` + /// - Added: Android 30+ + /// - SeeAlso: @available(Android 30, *) static var manageExternalStorage: Permission { Permission(rawValue: "android.permission.MANAGE_EXTERNAL_STORAGE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MANAGE_MEDIA` + /// - Java Constant: `Manifest.permission.MANAGE_MEDIA` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var manageMedia: Permission { Permission(rawValue: "android.permission.MANAGE_MEDIA") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MANAGE_ONGOING_CALLS` + /// - Java Constant: `Manifest.permission.MANAGE_ONGOING_CALLS` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var manageOngoingCalls: Permission { Permission(rawValue: "android.permission.MANAGE_ONGOING_CALLS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MASTER_CLEAR` + /// - Java Constant: `Manifest.permission.MASTER_CLEAR` + /// - Added: Android 1+ + /// - SeeAlso: static var masterClear: Permission { Permission(rawValue: "android.permission.MASTER_CLEAR") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MEDIA_CONTENT_CONTROL` + /// - Java Constant: `Manifest.permission.MEDIA_CONTENT_CONTROL` + /// - Added: Android 1+ + /// - SeeAlso: static var mediaContentControl: Permission { Permission(rawValue: "android.permission.MEDIA_CONTENT_CONTROL") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MODIFY_AUDIO_SETTINGS` + /// - Java Constant: `Manifest.permission.MODIFY_AUDIO_SETTINGS` + /// - Added: Android 1+ + /// - SeeAlso: static var modifyAudioSettings: Permission { Permission(rawValue: "android.permission.MODIFY_AUDIO_SETTINGS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MODIFY_PHONE_STATE` + /// - Java Constant: `Manifest.permission.MODIFY_PHONE_STATE` + /// - Added: Android 1+ + /// - SeeAlso: static var modifyPhoneState: Permission { Permission(rawValue: "android.permission.MODIFY_PHONE_STATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MOUNT_FORMAT_FILESYSTEMS` + /// - Java Constant: `Manifest.permission.MOUNT_FORMAT_FILESYSTEMS` + /// - Added: Android 1+ + /// - SeeAlso: static var mountFormatFilesystems: Permission { Permission(rawValue: "android.permission.MOUNT_FORMAT_FILESYSTEMS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MOUNT_UNMOUNT_FILESYSTEMS` + /// - Java Constant: `Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS` + /// - Added: Android 1+ + /// - SeeAlso: static var mountUnmountFilesystems: Permission { Permission(rawValue: "android.permission.MOUNT_UNMOUNT_FILESYSTEMS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.NFC` + /// - Java Constant: `Manifest.permission.NFC` + /// - Added: Android 1+ + /// - SeeAlso: static var nfc: Permission { Permission(rawValue: "android.permission.NFC") } + /// Android manifest permission. + /// - Constant Value: `android.permission.NFC_TRANSACTION_EVENT` + /// - Java Constant: `Manifest.permission.NFC_TRANSACTION_EVENT` + /// - Added: Android 1+ + /// - SeeAlso: static var nfcTransactionEvent: Permission { Permission(rawValue: "android.permission.NFC_TRANSACTION_EVENT") } + /// Android manifest permission. + /// - Constant Value: `android.permission.NFC_PREFERRED_PAYMENT_INFO` + /// - Java Constant: `Manifest.permission.NFC_PREFERRED_PAYMENT_INFO` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var nfcPreferredPaymentInfo: Permission { Permission(rawValue: "android.permission.NFC_PREFERRED_PAYMENT_INFO") } + /// Android manifest permission. + /// - Constant Value: `android.permission.NEARBY_WIFI_DEVICES` + /// - Java Constant: `Manifest.permission.NEARBY_WIFI_DEVICES` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var nearbyWifiDevices: Permission { Permission(rawValue: "android.permission.NEARBY_WIFI_DEVICES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.PACKAGE_USAGE_STATS` + /// - Java Constant: `Manifest.permission.PACKAGE_USAGE_STATS` + /// - Added: Android 1+ + /// - SeeAlso: static var packageUsageStats: Permission { Permission(rawValue: "android.permission.PACKAGE_USAGE_STATS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.POST_NOTIFICATIONS` + /// - Java Constant: `Manifest.permission.POST_NOTIFICATIONS` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var postNotifications: Permission { Permission(rawValue: "android.permission.POST_NOTIFICATIONS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.PROCESS_OUTGOING_CALLS` + /// - Java Constant: `Manifest.permission.PROCESS_OUTGOING_CALLS` + /// - Added: Android 1+ + /// - SeeAlso: static var processOutgoingCalls: Permission { Permission(rawValue: "android.permission.PROCESS_OUTGOING_CALLS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_CALENDAR` + /// - Java Constant: `Manifest.permission.READ_CALENDAR` + /// - Added: Android 1+ + /// - SeeAlso: static var readCalendar: Permission { Permission(rawValue: "android.permission.READ_CALENDAR") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_CALL_LOG` + /// - Java Constant: `Manifest.permission.READ_CALL_LOG` + /// - Added: Android 1+ + /// - SeeAlso: static var readCallLog: Permission { Permission(rawValue: "android.permission.READ_CALL_LOG") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_CONTACTS` + /// - Java Constant: `Manifest.permission.READ_CONTACTS` + /// - Added: Android 1+ + /// - SeeAlso: static var readContacts: Permission { Permission(rawValue: "android.permission.READ_CONTACTS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_EXTERNAL_STORAGE` + /// - Java Constant: `Manifest.permission.READ_EXTERNAL_STORAGE` + /// - Added: Android 1+ + /// - SeeAlso: static var readExternalStorage: Permission { Permission(rawValue: "android.permission.READ_EXTERNAL_STORAGE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_MEDIA_AUDIO` + /// - Java Constant: `Manifest.permission.READ_MEDIA_AUDIO` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var readMediaAudio: Permission { Permission(rawValue: "android.permission.READ_MEDIA_AUDIO") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_MEDIA_IMAGES` + /// - Java Constant: `Manifest.permission.READ_MEDIA_IMAGES` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var readMediaImages: Permission { Permission(rawValue: "android.permission.READ_MEDIA_IMAGES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_MEDIA_VIDEO` + /// - Java Constant: `Manifest.permission.READ_MEDIA_VIDEO` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var readMediaVideo: Permission { Permission(rawValue: "android.permission.READ_MEDIA_VIDEO") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_MEDIA_VISUAL_USER_SELECTED` + /// - Java Constant: `Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED` + /// - Added: Android 34+ + /// - SeeAlso: @available(Android 34, *) static var readMediaVisualUserSelected: Permission { Permission(rawValue: "android.permission.READ_MEDIA_VISUAL_USER_SELECTED") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_FRAME_BUFFER` + /// - Java Constant: `Manifest.permission.READ_FRAME_BUFFER` + /// - Added: Android 21+ + /// - SeeAlso: @available(Android 21, *) static var readFrameBuffer: Permission { Permission(rawValue: "android.permission.READ_FRAME_BUFFER") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_LOGS` + /// - Java Constant: `Manifest.permission.READ_LOGS` + /// - Added: Android 1+ + /// - SeeAlso: static var readLogs: Permission { Permission(rawValue: "android.permission.READ_LOGS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_PHONE_NUMBERS` + /// - Java Constant: `Manifest.permission.READ_PHONE_NUMBERS` + /// - Added: Android 26+ + /// - SeeAlso: @available(Android 26, *) static var readPhoneNumbers: Permission { Permission(rawValue: "android.permission.READ_PHONE_NUMBERS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_PHONE_STATE` + /// - Java Constant: `Manifest.permission.READ_PHONE_STATE` + /// - Added: Android 1+ + /// - SeeAlso: static var readPhoneState: Permission { Permission(rawValue: "android.permission.READ_PHONE_STATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_SMS` + /// - Java Constant: `Manifest.permission.READ_SMS` + /// - Added: Android 1+ + /// - SeeAlso: static var readSms: Permission { Permission(rawValue: "android.permission.READ_SMS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_SYNC_SETTINGS` + /// - Java Constant: `Manifest.permission.READ_SYNC_SETTINGS` + /// - Added: Android 1+ + /// - SeeAlso: static var readSyncSettings: Permission { Permission(rawValue: "android.permission.READ_SYNC_SETTINGS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_SYNC_STATS` + /// - Java Constant: `Manifest.permission.READ_SYNC_STATS` + /// - Added: Android 1+ + /// - SeeAlso: static var readSyncStats: Permission { Permission(rawValue: "android.permission.READ_SYNC_STATS") } + /// Android manifest permission. + /// - Constant Value: `com.android.voicemail.permission.READ_VOICEMAIL` + /// - Java Constant: `Manifest.permission.READ_VOICEMAIL` + /// - Added: Android 1+ + /// - SeeAlso: static var readVoicemail: Permission { Permission(rawValue: "com.android.voicemail.permission.READ_VOICEMAIL") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REBOOT` + /// - Java Constant: `Manifest.permission.REBOOT` + /// - Added: Android 1+ + /// - SeeAlso: static var reboot: Permission { Permission(rawValue: "android.permission.REBOOT") } + /// Android manifest permission. + /// - Constant Value: `android.permission.RECEIVE_BOOT_COMPLETED` + /// - Java Constant: `Manifest.permission.RECEIVE_BOOT_COMPLETED` + /// - Added: Android 1+ + /// - SeeAlso: static var receiveBootCompleted: Permission { Permission(rawValue: "android.permission.RECEIVE_BOOT_COMPLETED") } + /// Android manifest permission. + /// - Constant Value: `android.permission.RECEIVE_MMS` + /// - Java Constant: `Manifest.permission.RECEIVE_MMS` + /// - Added: Android 1+ + /// - SeeAlso: static var receiveMms: Permission { Permission(rawValue: "android.permission.RECEIVE_MMS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.RECEIVE_SMS` + /// - Java Constant: `Manifest.permission.RECEIVE_SMS` + /// - Added: Android 1+ + /// - SeeAlso: static var receiveSms: Permission { Permission(rawValue: "android.permission.RECEIVE_SMS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.RECEIVE_WAP_PUSH` + /// - Java Constant: `Manifest.permission.RECEIVE_WAP_PUSH` + /// - Added: Android 1+ + /// - SeeAlso: static var receiveWapPush: Permission { Permission(rawValue: "android.permission.RECEIVE_WAP_PUSH") } + /// Android manifest permission. + /// - Constant Value: `android.permission.RECORD_AUDIO` + /// - Java Constant: `Manifest.permission.RECORD_AUDIO` + /// - Added: Android 1+ + /// - SeeAlso: static var recordAudio: Permission { Permission(rawValue: "android.permission.RECORD_AUDIO") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REORDER_TASKS` + /// - Java Constant: `Manifest.permission.REORDER_TASKS` + /// - Added: Android 1+ + /// - SeeAlso: static var reorderTasks: Permission { Permission(rawValue: "android.permission.REORDER_TASKS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND` + /// - Java Constant: `Manifest.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND` + /// - Added: Android 1+ + /// - SeeAlso: static var requestCompanionRunInBackground: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND` + /// - Java Constant: `Manifest.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND` + /// - Added: Android 1+ + /// - SeeAlso: static var requestCompanionUseDataInBackground: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_DELETE_PACKAGES` + /// - Java Constant: `Manifest.permission.REQUEST_DELETE_PACKAGES` + /// - Added: Android 1+ + /// - SeeAlso: static var requestDeletePackages: Permission { Permission(rawValue: "android.permission.REQUEST_DELETE_PACKAGES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS` + /// - Java Constant: `Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS` + /// - Added: Android 1+ + /// - SeeAlso: static var requestIgnoreBatteryOptimizations: Permission { Permission(rawValue: "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_INSTALL_PACKAGES` + /// - Java Constant: `Manifest.permission.REQUEST_INSTALL_PACKAGES` + /// - Added: Android 1+ + /// - SeeAlso: static var requestInstallPackages: Permission { Permission(rawValue: "android.permission.REQUEST_INSTALL_PACKAGES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_PASSWORD_COMPLEXITY` + /// - Java Constant: `Manifest.permission.REQUEST_PASSWORD_COMPLEXITY` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var requestPasswordComplexity: Permission { Permission(rawValue: "android.permission.REQUEST_PASSWORD_COMPLEXITY") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SCHEDULE_EXACT_ALARM` + /// - Java Constant: `Manifest.permission.SCHEDULE_EXACT_ALARM` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var scheduleExactAlarm: Permission { Permission(rawValue: "android.permission.SCHEDULE_EXACT_ALARM") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SEND_RESPOND_VIA_MESSAGE` + /// - Java Constant: `Manifest.permission.SEND_RESPOND_VIA_MESSAGE` + /// - Added: Android 1+ + /// - SeeAlso: static var sendRespondViaMessage: Permission { Permission(rawValue: "android.permission.SEND_RESPOND_VIA_MESSAGE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SEND_SMS` + /// - Java Constant: `Manifest.permission.SEND_SMS` + /// - Added: Android 1+ + /// - SeeAlso: static var sendSms: Permission { Permission(rawValue: "android.permission.SEND_SMS") } + /// Android manifest permission. + /// - Constant Value: `com.android.alarm.permission.SET_ALARM` + /// - Java Constant: `Manifest.permission.SET_ALARM` + /// - Added: Android 1+ + /// - SeeAlso: static var setAlarm: Permission { Permission(rawValue: "com.android.alarm.permission.SET_ALARM") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SET_ALWAYS_FINISH` + /// - Java Constant: `Manifest.permission.SET_ALWAYS_FINISH` + /// - Added: Android 1+ + /// - SeeAlso: static var setAlwaysFinish: Permission { Permission(rawValue: "android.permission.SET_ALWAYS_FINISH") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SET_ANIMATION_SCALE` + /// - Java Constant: `Manifest.permission.SET_ANIMATION_SCALE` + /// - Added: Android 1+ + /// - SeeAlso: static var setAnimationScale: Permission { Permission(rawValue: "android.permission.SET_ANIMATION_SCALE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SET_DEBUG_APP` + /// - Java Constant: `Manifest.permission.SET_DEBUG_APP` + /// - Added: Android 1+ + /// - SeeAlso: static var setDebugApp: Permission { Permission(rawValue: "android.permission.SET_DEBUG_APP") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SET_PROCESS_LIMIT` + /// - Java Constant: `Manifest.permission.SET_PROCESS_LIMIT` + /// - Added: Android 1+ + /// - SeeAlso: static var setProcessLimit: Permission { Permission(rawValue: "android.permission.SET_PROCESS_LIMIT") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SET_TIME` + /// - Java Constant: `Manifest.permission.SET_TIME` + /// - Added: Android 1+ + /// - SeeAlso: static var setTime: Permission { Permission(rawValue: "android.permission.SET_TIME") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SET_TIME_ZONE` + /// - Java Constant: `Manifest.permission.SET_TIME_ZONE` + /// - Added: Android 1+ + /// - SeeAlso: static var setTimeZone: Permission { Permission(rawValue: "android.permission.SET_TIME_ZONE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SET_WALLPAPER` + /// - Java Constant: `Manifest.permission.SET_WALLPAPER` + /// - Added: Android 1+ + /// - SeeAlso: static var setWallpaper: Permission { Permission(rawValue: "android.permission.SET_WALLPAPER") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SET_WALLPAPER_HINTS` + /// - Java Constant: `Manifest.permission.SET_WALLPAPER_HINTS` + /// - Added: Android 1+ + /// - SeeAlso: static var setWallpaperHints: Permission { Permission(rawValue: "android.permission.SET_WALLPAPER_HINTS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SIGNAL_PERSISTENT_PROCESSES` + /// - Java Constant: `Manifest.permission.SIGNAL_PERSISTENT_PROCESSES` + /// - Added: Android 1+ + /// - SeeAlso: static var signalPersistentProcesses: Permission { Permission(rawValue: "android.permission.SIGNAL_PERSISTENT_PROCESSES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.STATUS_BAR` + /// - Java Constant: `Manifest.permission.STATUS_BAR` + /// - Added: Android 1+ + /// - SeeAlso: static var statusBar: Permission { Permission(rawValue: "android.permission.STATUS_BAR") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SYSTEM_ALERT_WINDOW` + /// - Java Constant: `Manifest.permission.SYSTEM_ALERT_WINDOW` + /// - Added: Android 1+ + /// - SeeAlso: static var systemAlertWindow: Permission { Permission(rawValue: "android.permission.SYSTEM_ALERT_WINDOW") } + /// Android manifest permission. + /// - Constant Value: `android.permission.TRANSMIT_IR` + /// - Java Constant: `Manifest.permission.TRANSMIT_IR` + /// - Added: Android 1+ + /// - SeeAlso: static var transmitIr: Permission { Permission(rawValue: "android.permission.TRANSMIT_IR") } + /// Android manifest permission. + /// - Constant Value: `com.android.launcher.permission.UNINSTALL_SHORTCUT` + /// - Java Constant: `Manifest.permission.UNINSTALL_SHORTCUT` + /// - Added: Android 1+ + /// - SeeAlso: static var uninstallShortcut: Permission { Permission(rawValue: "com.android.launcher.permission.UNINSTALL_SHORTCUT") } + /// Android manifest permission. + /// - Constant Value: `android.permission.UPDATE_DEVICE_STATS` + /// - Java Constant: `Manifest.permission.UPDATE_DEVICE_STATS` + /// - Added: Android 1+ + /// - SeeAlso: static var updateDeviceStats: Permission { Permission(rawValue: "android.permission.UPDATE_DEVICE_STATS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.USE_BIOMETRIC` + /// - Java Constant: `Manifest.permission.USE_BIOMETRIC` + /// - Added: Android 1+ + /// - SeeAlso: static var useBiometric: Permission { Permission(rawValue: "android.permission.USE_BIOMETRIC") } + /// Android manifest permission. + /// - Constant Value: `android.permission.USE_EXACT_ALARM` + /// - Java Constant: `Manifest.permission.USE_EXACT_ALARM` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var useExactAlarm: Permission { Permission(rawValue: "android.permission.USE_EXACT_ALARM") } + /// Android manifest permission. + /// - Constant Value: `android.permission.USE_FULL_SCREEN_INTENT` + /// - Java Constant: `Manifest.permission.USE_FULL_SCREEN_INTENT` + /// - Added: Android 29+ + /// - SeeAlso: @available(Android 29, *) static var useFullScreenIntent: Permission { Permission(rawValue: "android.permission.USE_FULL_SCREEN_INTENT") } + /// Android manifest permission. + /// - Constant Value: `android.permission.USE_SIP` + /// - Java Constant: `Manifest.permission.USE_SIP` + /// - Added: Android 1+ + /// - SeeAlso: static var useSip: Permission { Permission(rawValue: "android.permission.USE_SIP") } + /// Android manifest permission. + /// - Constant Value: `android.permission.UWB_RANGING` + /// - Java Constant: `Manifest.permission.UWB_RANGING` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var uwbRanging: Permission { Permission(rawValue: "android.permission.UWB_RANGING") } + /// Android manifest permission. + /// - Constant Value: `android.permission.VIBRATE` + /// - Java Constant: `Manifest.permission.VIBRATE` + /// - Added: Android 1+ + /// - SeeAlso: static var vibrate: Permission { Permission(rawValue: "android.permission.VIBRATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.WAKE_LOCK` + /// - Java Constant: `Manifest.permission.WAKE_LOCK` + /// - Added: Android 1+ + /// - SeeAlso: static var wakeLock: Permission { Permission(rawValue: "android.permission.WAKE_LOCK") } + /// Android manifest permission. + /// - Constant Value: `android.permission.WRITE_APN_SETTINGS` + /// - Java Constant: `Manifest.permission.WRITE_APN_SETTINGS` + /// - Added: Android 1+ + /// - SeeAlso: static var writeApnSettings: Permission { Permission(rawValue: "android.permission.WRITE_APN_SETTINGS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.WRITE_CALENDAR` + /// - Java Constant: `Manifest.permission.WRITE_CALENDAR` + /// - Added: Android 1+ + /// - SeeAlso: static var writeCalendar: Permission { Permission(rawValue: "android.permission.WRITE_CALENDAR") } + /// Android manifest permission. + /// - Constant Value: `android.permission.WRITE_CALL_LOG` + /// - Java Constant: `Manifest.permission.WRITE_CALL_LOG` + /// - Added: Android 1+ + /// - SeeAlso: static var writeCallLog: Permission { Permission(rawValue: "android.permission.WRITE_CALL_LOG") } + /// Android manifest permission. + /// - Constant Value: `android.permission.WRITE_CONTACTS` + /// - Java Constant: `Manifest.permission.WRITE_CONTACTS` + /// - Added: Android 1+ + /// - SeeAlso: static var writeContacts: Permission { Permission(rawValue: "android.permission.WRITE_CONTACTS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.WRITE_EXTERNAL_STORAGE` + /// - Java Constant: `Manifest.permission.WRITE_EXTERNAL_STORAGE` + /// - Added: Android 1+ + /// - SeeAlso: static var writeExternalStorage: Permission { Permission(rawValue: "android.permission.WRITE_EXTERNAL_STORAGE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.WRITE_GSERVICES` + /// - Java Constant: `Manifest.permission.WRITE_GSERVICES` + /// - Added: Android 1+ + /// - SeeAlso: static var writeGservices: Permission { Permission(rawValue: "android.permission.WRITE_GSERVICES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.WRITE_SECURE_SETTINGS` + /// - Java Constant: `Manifest.permission.WRITE_SECURE_SETTINGS` + /// - Added: Android 1+ + /// - SeeAlso: static var writeSecureSettings: Permission { Permission(rawValue: "android.permission.WRITE_SECURE_SETTINGS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.WRITE_SETTINGS` + /// - Java Constant: `Manifest.permission.WRITE_SETTINGS` + /// - Added: Android 1+ + /// - SeeAlso: static var writeSettings: Permission { Permission(rawValue: "android.permission.WRITE_SETTINGS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.WRITE_SYNC_SETTINGS` + /// - Java Constant: `Manifest.permission.WRITE_SYNC_SETTINGS` + /// - Added: Android 1+ + /// - SeeAlso: static var writeSyncSettings: Permission { Permission(rawValue: "android.permission.WRITE_SYNC_SETTINGS") } + /// Android manifest permission. + /// - Constant Value: `com.android.voicemail.permission.WRITE_VOICEMAIL` + /// - Java Constant: `Manifest.permission.WRITE_VOICEMAIL` + /// - Added: Android 1+ + /// - SeeAlso: static var writeVoicemail: Permission { Permission(rawValue: "com.android.voicemail.permission.WRITE_VOICEMAIL") } + /// Android manifest permission. + /// - Constant Value: `android.permission.ACCESS_BLOBS_ACROSS_USERS` + /// - Java Constant: `Manifest.permission.ACCESS_BLOBS_ACROSS_USERS` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var accessBlobsAcrossUsers: Permission { Permission(rawValue: "android.permission.ACCESS_BLOBS_ACROSS_USERS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_CALL_REDIRECTION_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_CALL_REDIRECTION_SERVICE` + /// - Added: Android 29+ + /// - SeeAlso: @available(Android 29, *) static var bindCallRedirectionService: Permission { Permission(rawValue: "android.permission.BIND_CALL_REDIRECTION_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE` + /// - Added: Android 29+ + /// - SeeAlso: @available(Android 29, *) static var bindCarrierMessagingClientService: Permission { Permission(rawValue: "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_CARRIER_MESSAGING_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_CARRIER_MESSAGING_SERVICE` + /// - Added: Android 1+ + /// - SeeAlso: static var bindCarrierMessagingService: Permission { Permission(rawValue: "android.permission.BIND_CARRIER_MESSAGING_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_COMPANION_DEVICE_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_COMPANION_DEVICE_SERVICE` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var bindCompanionDeviceService: Permission { Permission(rawValue: "android.permission.BIND_COMPANION_DEVICE_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_CONTROLS` + /// - Java Constant: `Manifest.permission.BIND_CONTROLS` + /// - Added: Android 30+ + /// - SeeAlso: @available(Android 30, *) static var bindControls: Permission { Permission(rawValue: "android.permission.BIND_CONTROLS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE` + /// - Java Constant: `Manifest.permission.BIND_QUICK_ACCESS_WALLET_SERVICE` + /// - Added: Android 30+ + /// - SeeAlso: @available(Android 30, *) static var bindQuickAccessWalletService: Permission { Permission(rawValue: "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.BIND_TV_INTERACTIVE_APP` + /// - Java Constant: `Manifest.permission.BIND_TV_INTERACTIVE_APP` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var bindTvInteractiveApp: Permission { Permission(rawValue: "android.permission.BIND_TV_INTERACTIVE_APP") } + /// Android manifest permission. + /// - Constant Value: `android.permission.CALL_COMPANION_APP` + /// - Java Constant: `Manifest.permission.CALL_COMPANION_APP` + /// - Added: Android 29+ + /// - SeeAlso: @available(Android 29, *) static var callCompanionApp: Permission { Permission(rawValue: "android.permission.CALL_COMPANION_APP") } + /// Android manifest permission. + /// - Constant Value: `android.permission.DELIVER_COMPANION_MESSAGES` + /// - Java Constant: `Manifest.permission.DELIVER_COMPANION_MESSAGES` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var deliverCompanionMessages: Permission { Permission(rawValue: "android.permission.DELIVER_COMPANION_MESSAGES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.GET_TASKS` + /// - Java Constant: `Manifest.permission.GET_TASKS` + /// - Added: Android 1+ + /// - SeeAlso: static var getTasks: Permission { Permission(rawValue: "android.permission.GET_TASKS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.HIDE_OVERLAY_WINDOWS` + /// - Java Constant: `Manifest.permission.HIDE_OVERLAY_WINDOWS` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var hideOverlayWindows: Permission { Permission(rawValue: "android.permission.HIDE_OVERLAY_WINDOWS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.HIGH_SAMPLING_RATE_SENSORS` + /// - Java Constant: `Manifest.permission.HIGH_SAMPLING_RATE_SENSORS` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var highSamplingRateSensors: Permission { Permission(rawValue: "android.permission.HIGH_SAMPLING_RATE_SENSORS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.INTERACT_ACROSS_PROFILES` + /// - Java Constant: `Manifest.permission.INTERACT_ACROSS_PROFILES` + /// - Added: Android 30+ + /// - SeeAlso: @available(Android 30, *) static var interactAcrossProfiles: Permission { Permission(rawValue: "android.permission.INTERACT_ACROSS_PROFILES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK` + /// - Java Constant: `Manifest.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK` + /// - Added: Android 32+ + /// - SeeAlso: @available(Android 32, *) static var launchMultiPaneSettingsDeepLink: Permission { Permission(rawValue: "android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK") } + /// Android manifest permission. + /// - Constant Value: `android.permission.LOADER_USAGE_STATS` + /// - Java Constant: `Manifest.permission.LOADER_USAGE_STATS` + /// - Added: Android 30+ + /// - SeeAlso: @available(Android 30, *) static var loaderUsageStats: Permission { Permission(rawValue: "android.permission.LOADER_USAGE_STATS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MANAGE_WIFI_INTERFACES` + /// - Java Constant: `Manifest.permission.MANAGE_WIFI_INTERFACES` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var manageWifiInterfaces: Permission { Permission(rawValue: "android.permission.MANAGE_WIFI_INTERFACES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.MANAGE_WIFI_NETWORK_SELECTION` + /// - Java Constant: `Manifest.permission.MANAGE_WIFI_NETWORK_SELECTION` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var manageWifiNetworkSelection: Permission { Permission(rawValue: "android.permission.MANAGE_WIFI_NETWORK_SELECTION") } + /// Android manifest permission. + /// - Constant Value: `android.permission.OVERRIDE_WIFI_CONFIG` + /// - Java Constant: `Manifest.permission.OVERRIDE_WIFI_CONFIG` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var overrideWifiConfig: Permission { Permission(rawValue: "android.permission.OVERRIDE_WIFI_CONFIG") } + /// Android manifest permission. + /// - Constant Value: `android.permission.PERSISTENT_ACTIVITY` + /// - Java Constant: `Manifest.permission.PERSISTENT_ACTIVITY` + /// - Added: Android 1+ + /// - SeeAlso: static var persistentActivity: Permission { Permission(rawValue: "android.permission.PERSISTENT_ACTIVITY") } + /// Android manifest permission. + /// - Constant Value: `android.permission.QUERY_ALL_PACKAGES` + /// - Java Constant: `Manifest.permission.QUERY_ALL_PACKAGES` + /// - Added: Android 30+ + /// - SeeAlso: @available(Android 30, *) static var queryAllPackages: Permission { Permission(rawValue: "android.permission.QUERY_ALL_PACKAGES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_ASSISTANT_APP_SEARCH_DATA` + /// - Java Constant: `Manifest.permission.READ_ASSISTANT_APP_SEARCH_DATA` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var readAssistantAppSearchData: Permission { Permission(rawValue: "android.permission.READ_ASSISTANT_APP_SEARCH_DATA") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_BASIC_PHONE_STATE` + /// - Java Constant: `Manifest.permission.READ_BASIC_PHONE_STATE` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var readBasicPhoneState: Permission { Permission(rawValue: "android.permission.READ_BASIC_PHONE_STATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_HOME_APP_SEARCH_DATA` + /// - Java Constant: `Manifest.permission.READ_HOME_APP_SEARCH_DATA` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var readHomeAppSearchData: Permission { Permission(rawValue: "android.permission.READ_HOME_APP_SEARCH_DATA") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_INPUT_STATE` + /// - Java Constant: `Manifest.permission.READ_INPUT_STATE` + /// - Added: Android 1+ + /// - SeeAlso: static var readInputState: Permission { Permission(rawValue: "android.permission.READ_INPUT_STATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_NEARBY_STREAMING_POLICY` + /// - Java Constant: `Manifest.permission.READ_NEARBY_STREAMING_POLICY` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var readNearbyStreamingPolicy: Permission { Permission(rawValue: "android.permission.READ_NEARBY_STREAMING_POLICY") } + /// Android manifest permission. + /// - Constant Value: `android.permission.READ_PRECISE_PHONE_STATE` + /// - Java Constant: `Manifest.permission.READ_PRECISE_PHONE_STATE` + /// - Added: Android 30+ + /// - SeeAlso: @available(Android 30, *) static var readPrecisePhoneState: Permission { Permission(rawValue: "android.permission.READ_PRECISE_PHONE_STATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_COMPANION_PROFILE_APP_STREAMING` + /// - Java Constant: `Manifest.permission.REQUEST_COMPANION_PROFILE_APP_STREAMING` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var requestCompanionProfileAppStreaming: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_PROFILE_APP_STREAMING") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION` + /// - Java Constant: `Manifest.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var requestCompanionProfileAutomotiveProjection: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_COMPANION_PROFILE_COMPUTER` + /// - Java Constant: `Manifest.permission.REQUEST_COMPANION_PROFILE_COMPUTER` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var requestCompanionProfileComputer: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_PROFILE_COMPUTER") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_COMPANION_PROFILE_WATCH` + /// - Java Constant: `Manifest.permission.REQUEST_COMPANION_PROFILE_WATCH` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var requestCompanionProfileWatch: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_PROFILE_WATCH") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_COMPANION_SELF_MANAGED` + /// - Java Constant: `Manifest.permission.REQUEST_COMPANION_SELF_MANAGED` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var requestCompanionSelfManaged: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_SELF_MANAGED") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND` + /// - Java Constant: `Manifest.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var requestCompanionStartForegroundServicesFromBackground: Permission { Permission(rawValue: "android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND") } + /// Android manifest permission. + /// - Constant Value: `android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE` + /// - Java Constant: `Manifest.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var requestObserveCompanionDevicePresence: Permission { Permission(rawValue: "android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.RESTART_PACKAGES` + /// - Java Constant: `Manifest.permission.RESTART_PACKAGES` + /// - Added: Android 1+ + /// - SeeAlso: static var restartPackages: Permission { Permission(rawValue: "android.permission.RESTART_PACKAGES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SET_PREFERRED_APPLICATIONS` + /// - Java Constant: `Manifest.permission.SET_PREFERRED_APPLICATIONS` + /// - Added: Android 1+ + /// - SeeAlso: static var setPreferredApplications: Permission { Permission(rawValue: "android.permission.SET_PREFERRED_APPLICATIONS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SMS_FINANCIAL_TRANSACTIONS` + /// - Java Constant: `Manifest.permission.SMS_FINANCIAL_TRANSACTIONS` + /// - Added: Android 29+ + /// - SeeAlso: @available(Android 29, *) static var smsFinancialTransactions: Permission { Permission(rawValue: "android.permission.SMS_FINANCIAL_TRANSACTIONS") } + /// Android manifest permission. + /// - Constant Value: `android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND` + /// - Java Constant: `Manifest.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var startForegroundServicesFromBackground: Permission { Permission(rawValue: "android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND") } + /// Android manifest permission. + /// - Constant Value: `android.permission.START_VIEW_APP_FEATURES` + /// - Java Constant: `Manifest.permission.START_VIEW_APP_FEATURES` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var startViewAppFeatures: Permission { Permission(rawValue: "android.permission.START_VIEW_APP_FEATURES") } + /// Android manifest permission. + /// - Constant Value: `android.permission.START_VIEW_PERMISSION_USAGE` + /// - Java Constant: `Manifest.permission.START_VIEW_PERMISSION_USAGE` + /// - Added: Android 29+ + /// - SeeAlso: @available(Android 29, *) static var startViewPermissionUsage: Permission { Permission(rawValue: "android.permission.START_VIEW_PERMISSION_USAGE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE` + /// - Java Constant: `Manifest.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE` + /// - Added: Android 33+ + /// - SeeAlso: @available(Android 33, *) static var subscribeToKeyguardLockedState: Permission { Permission(rawValue: "android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE") } + /// Android manifest permission. + /// - Constant Value: `android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION` + /// - Java Constant: `Manifest.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var updatePackagesWithoutUserAction: Permission { Permission(rawValue: "android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION") } + /// Android manifest permission. + /// - Constant Value: `android.permission.USE_FINGERPRINT` + /// - Java Constant: `Manifest.permission.USE_FINGERPRINT` + /// - Added: Android 23+ + /// - SeeAlso: @available(Android 23, *) static var useFingerprint: Permission { Permission(rawValue: "android.permission.USE_FINGERPRINT") } + /// Android manifest permission. + /// - Constant Value: `android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER` + /// - Java Constant: `Manifest.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER` + /// - Added: Android 31+ + /// - SeeAlso: @available(Android 31, *) static var useIccAuthWithDeviceIdentifier: Permission { Permission(rawValue: "android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER") } } From 9dcd2c3f51a6587135d603165ff7dec968f76db0 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Thu, 26 Feb 2026 22:04:16 -0500 Subject: [PATCH 5/8] Remove JNI dependency for `AndroidManifest` target --- Package.swift | 26 +- Sources/AndroidManifest/AndroidManifest.swift | 8 - .../generated/Manifest+Permission+Group.swift | 57 -- .../generated/Manifest+Permission.swift | 717 ------------------ .../AndroidManifest/generated/Manifest.swift | 9 - Sources/AndroidManifest/swift-java.config | 8 - 6 files changed, 14 insertions(+), 811 deletions(-) delete mode 100644 Sources/AndroidManifest/AndroidManifest.swift delete mode 100644 Sources/AndroidManifest/generated/Manifest+Permission+Group.swift delete mode 100644 Sources/AndroidManifest/generated/Manifest+Permission.swift delete mode 100644 Sources/AndroidManifest/generated/Manifest.swift delete mode 100644 Sources/AndroidManifest/swift-java.config diff --git a/Package.swift b/Package.swift index 06abde0e..0f5c3d6e 100644 --- a/Package.swift +++ b/Package.swift @@ -219,18 +219,6 @@ var package = Package( sdkVersionDefine ] ), - .target( - name: "AndroidManifest", - dependencies: [ - "AndroidJava" - ], - exclude: ["swift-java.config"], - swiftSettings: [ - .swiftLanguageMode(.v5), - ndkVersionDefine, - sdkVersionDefine - ] - ), .target( name: "AndroidR", dependencies: [ @@ -487,6 +475,20 @@ var package = Package( linkerSettings: [ .linkedLibrary("android", .when(platforms: [.android])) ] + ), + .target( + name: "AndroidManifest", + dependencies: [ + "AndroidNDK" + ], + swiftSettings: [ + .swiftLanguageMode(.v6), + ndkVersionDefine, + sdkVersionDefine + ], + linkerSettings: [ + .linkedLibrary("android", .when(platforms: [.android])) + ] ) ], swiftLanguageModes: [.v5, .v6] diff --git a/Sources/AndroidManifest/AndroidManifest.swift b/Sources/AndroidManifest/AndroidManifest.swift deleted file mode 100644 index ac343264..00000000 --- a/Sources/AndroidManifest/AndroidManifest.swift +++ /dev/null @@ -1,8 +0,0 @@ -// -// AndroidManifest.swift -// AndroidApp -// -// Created by Alsey Coleman Miller on 6/7/25. -// - -import SwiftJava diff --git a/Sources/AndroidManifest/generated/Manifest+Permission+Group.swift b/Sources/AndroidManifest/generated/Manifest+Permission+Group.swift deleted file mode 100644 index ebb3c7a1..00000000 --- a/Sources/AndroidManifest/generated/Manifest+Permission+Group.swift +++ /dev/null @@ -1,57 +0,0 @@ -// Auto-generated by Java-to-Swift wrapper generator. -import SwiftJava -import CSwiftJavaJNI - -extension Manifest.Permission { - @JavaClass("android.Manifest$permission_group") - open class Group: JavaObject { - @JavaMethod - @_nonoverride public convenience init(environment: JNIEnvironment? = nil) - } -} -extension JavaClass { - @JavaStaticField(isFinal: true) - public var ACTIVITY_RECOGNITION: String - - @JavaStaticField(isFinal: true) - public var CALENDAR: String - - @JavaStaticField(isFinal: true) - public var CALL_LOG: String - - @JavaStaticField(isFinal: true) - public var CAMERA: String - - @JavaStaticField(isFinal: true) - public var CONTACTS: String - - @JavaStaticField(isFinal: true) - public var LOCATION: String - - @JavaStaticField(isFinal: true) - public var MICROPHONE: String - - @JavaStaticField(isFinal: true) - public var NEARBY_DEVICES: String - - @JavaStaticField(isFinal: true) - public var NOTIFICATIONS: String - - @JavaStaticField(isFinal: true) - public var PHONE: String - - @JavaStaticField(isFinal: true) - public var READ_MEDIA_AURAL: String - - @JavaStaticField(isFinal: true) - public var READ_MEDIA_VISUAL: String - - @JavaStaticField(isFinal: true) - public var SENSORS: String - - @JavaStaticField(isFinal: true) - public var SMS: String - - @JavaStaticField(isFinal: true) - public var STORAGE: String -} diff --git a/Sources/AndroidManifest/generated/Manifest+Permission.swift b/Sources/AndroidManifest/generated/Manifest+Permission.swift deleted file mode 100644 index 3365f0b5..00000000 --- a/Sources/AndroidManifest/generated/Manifest+Permission.swift +++ /dev/null @@ -1,717 +0,0 @@ -// Auto-generated by Java-to-Swift wrapper generator. -import SwiftJava -import CSwiftJavaJNI - -extension Manifest { - @JavaClass("android.Manifest$permission") - open class Permission: JavaObject { - @JavaMethod - @_nonoverride public convenience init(environment: JNIEnvironment? = nil) - } -} -extension JavaClass { - @JavaStaticField(isFinal: true) - public var ACCEPT_HANDOVER: String - - @available(Android 29, *) - @JavaStaticField(isFinal: true) - public var ACCESS_BACKGROUND_LOCATION: String - - @JavaStaticField(isFinal: true) - public var ACCESS_BLOBS_ACROSS_USERS: String - - @JavaStaticField(isFinal: true) - public var ACCESS_CHECKIN_PROPERTIES: String - - @JavaStaticField(isFinal: true) - public var ACCESS_COARSE_LOCATION: String - - @JavaStaticField(isFinal: true) - public var ACCESS_FINE_LOCATION: String - - @JavaStaticField(isFinal: true) - public var ACCESS_LOCATION_EXTRA_COMMANDS: String - - @available(Android 29, *) - @JavaStaticField(isFinal: true) - public var ACCESS_MEDIA_LOCATION: String - - @JavaStaticField(isFinal: true) - public var ACCESS_NETWORK_STATE: String - - @JavaStaticField(isFinal: true) - public var ACCESS_NOTIFICATION_POLICY: String - - @JavaStaticField(isFinal: true) - public var ACCESS_WIFI_STATE: String - - @JavaStaticField(isFinal: true) - public var ACCOUNT_MANAGER: String - - @available(Android 29, *) - @JavaStaticField(isFinal: true) - public var ACTIVITY_RECOGNITION: String - - @JavaStaticField(isFinal: true) - public var ADD_VOICEMAIL: String - - @available(Android 26, *) - @JavaStaticField(isFinal: true) - public var ANSWER_PHONE_CALLS: String - - @JavaStaticField(isFinal: true) - public var BATTERY_STATS: String - - @JavaStaticField(isFinal: true) - public var BIND_ACCESSIBILITY_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_APPWIDGET: String - - @JavaStaticField(isFinal: true) - public var BIND_AUTOFILL_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_CALL_REDIRECTION_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_CARRIER_MESSAGING_CLIENT_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_CARRIER_MESSAGING_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_CARRIER_SERVICES: String - - @JavaStaticField(isFinal: true) - public var BIND_CHOOSER_TARGET_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_COMPANION_DEVICE_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_CONDITION_PROVIDER_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_CONTROLS: String - - @JavaStaticField(isFinal: true) - public var BIND_DEVICE_ADMIN: String - - @JavaStaticField(isFinal: true) - public var BIND_DREAM_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_INCALL_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_INPUT_METHOD: String - - @JavaStaticField(isFinal: true) - public var BIND_MIDI_DEVICE_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_NFC_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_NOTIFICATION_LISTENER_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_PRINT_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_QUICK_ACCESS_WALLET_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_QUICK_SETTINGS_TILE: String - - @JavaStaticField(isFinal: true) - public var BIND_REMOTEVIEWS: String - - @JavaStaticField(isFinal: true) - public var BIND_SCREENING_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_TELECOM_CONNECTION_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_TEXT_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_TV_INPUT: String - - @JavaStaticField(isFinal: true) - public var BIND_TV_INTERACTIVE_APP: String - - @JavaStaticField(isFinal: true) - public var BIND_VISUAL_VOICEMAIL_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_VOICE_INTERACTION: String - - @JavaStaticField(isFinal: true) - public var BIND_VPN_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_VR_LISTENER_SERVICE: String - - @JavaStaticField(isFinal: true) - public var BIND_WALLPAPER: String - - @JavaStaticField(isFinal: true) - public var BLUETOOTH: String - - @JavaStaticField(isFinal: true) - public var BLUETOOTH_ADMIN: String - - @available(Android 31, *) - @JavaStaticField(isFinal: true) - public var BLUETOOTH_ADVERTISE: String - - @available(Android 31, *) - @JavaStaticField(isFinal: true) - public var BLUETOOTH_CONNECT: String - - @JavaStaticField(isFinal: true) - public var BLUETOOTH_PRIVILEGED: String - - @available(Android 31, *) - @JavaStaticField(isFinal: true) - public var BLUETOOTH_SCAN: String - - @JavaStaticField(isFinal: true) - public var BODY_SENSORS: String - - @available(Android 33, *) - @JavaStaticField(isFinal: true) - public var BODY_SENSORS_BACKGROUND: String - - @JavaStaticField(isFinal: true) - public var BROADCAST_PACKAGE_REMOVED: String - - @JavaStaticField(isFinal: true) - public var BROADCAST_SMS: String - - @JavaStaticField(isFinal: true) - public var BROADCAST_STICKY: String - - @JavaStaticField(isFinal: true) - public var BROADCAST_WAP_PUSH: String - - @JavaStaticField(isFinal: true) - public var CALL_COMPANION_APP: String - - @JavaStaticField(isFinal: true) - public var CALL_PHONE: String - - @JavaStaticField(isFinal: true) - public var CALL_PRIVILEGED: String - - @JavaStaticField(isFinal: true) - public var CAMERA: String - - @JavaStaticField(isFinal: true) - public var CAPTURE_AUDIO_OUTPUT: String - - @available(Android 21, *) - @JavaStaticField(isFinal: true) - public var CAPTURE_SECURE_VIDEO_OUTPUT: String - - @available(Android 21, *) - @JavaStaticField(isFinal: true) - public var CAPTURE_VIDEO_OUTPUT: String - - @JavaStaticField(isFinal: true) - public var CHANGE_COMPONENT_ENABLED_STATE: String - - @JavaStaticField(isFinal: true) - public var CHANGE_CONFIGURATION: String - - @JavaStaticField(isFinal: true) - public var CHANGE_NETWORK_STATE: String - - @JavaStaticField(isFinal: true) - public var CHANGE_WIFI_MULTICAST_STATE: String - - @JavaStaticField(isFinal: true) - public var CHANGE_WIFI_STATE: String - - @JavaStaticField(isFinal: true) - public var CLEAR_APP_CACHE: String - - @JavaStaticField(isFinal: true) - public var CONTROL_LOCATION_UPDATES: String - - @JavaStaticField(isFinal: true) - public var DELETE_CACHE_FILES: String - - @JavaStaticField(isFinal: true) - public var DELETE_PACKAGES: String - - @JavaStaticField(isFinal: true) - public var DELIVER_COMPANION_MESSAGES: String - - @JavaStaticField(isFinal: true) - public var DIAGNOSTIC: String - - @JavaStaticField(isFinal: true) - public var DISABLE_KEYGUARD: String - - @JavaStaticField(isFinal: true) - public var DUMP: String - - @JavaStaticField(isFinal: true) - public var EXPAND_STATUS_BAR: String - - @JavaStaticField(isFinal: true) - public var FACTORY_TEST: String - - @available(Android 28, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE_CAMERA: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE_CONNECTED_DEVICE: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE_DATA_SYNC: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE_HEALTH: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE_LOCATION: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE_MEDIA_PLAYBACK: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE_MEDIA_PROJECTION: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE_MICROPHONE: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE_PHONE_CALL: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE_REMOTE_MESSAGING: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE_SPECIAL_USE: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var FOREGROUND_SERVICE_SYSTEM_EXEMPTED: String - - @JavaStaticField(isFinal: true) - public var GET_ACCOUNTS: String - - @JavaStaticField(isFinal: true) - public var GET_ACCOUNTS_PRIVILEGED: String - - @JavaStaticField(isFinal: true) - public var GET_PACKAGE_SIZE: String - - @JavaStaticField(isFinal: true) - public var GET_TASKS: String - - @JavaStaticField(isFinal: true) - public var GLOBAL_SEARCH: String - - @JavaStaticField(isFinal: true) - public var HIDE_OVERLAY_WINDOWS: String - - @JavaStaticField(isFinal: true) - public var HIGH_SAMPLING_RATE_SENSORS: String - - @JavaStaticField(isFinal: true) - public var INSTALL_LOCATION_PROVIDER: String - - @JavaStaticField(isFinal: true) - public var INSTALL_PACKAGES: String - - @JavaStaticField(isFinal: true) - public var INSTALL_SHORTCUT: String - - @JavaStaticField(isFinal: true) - public var INSTANT_APP_FOREGROUND_SERVICE: String - - @JavaStaticField(isFinal: true) - public var INTERACT_ACROSS_PROFILES: String - - @JavaStaticField(isFinal: true) - public var INTERNET: String - - @JavaStaticField(isFinal: true) - public var KILL_BACKGROUND_PROCESSES: String - - @JavaStaticField(isFinal: true) - public var LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK: String - - @JavaStaticField(isFinal: true) - public var LOADER_USAGE_STATS: String - - @JavaStaticField(isFinal: true) - public var LOCATION_HARDWARE: String - - @JavaStaticField(isFinal: true) - public var MANAGE_DOCUMENTS: String - - @available(Android 30, *) - @JavaStaticField(isFinal: true) - public var MANAGE_EXTERNAL_STORAGE: String - - @available(Android 31, *) - @JavaStaticField(isFinal: true) - public var MANAGE_MEDIA: String - - @available(Android 31, *) - @JavaStaticField(isFinal: true) - public var MANAGE_ONGOING_CALLS: String - - @JavaStaticField(isFinal: true) - public var MANAGE_OWN_CALLS: String - - @JavaStaticField(isFinal: true) - public var MANAGE_WIFI_INTERFACES: String - - @JavaStaticField(isFinal: true) - public var MANAGE_WIFI_NETWORK_SELECTION: String - - @JavaStaticField(isFinal: true) - public var MASTER_CLEAR: String - - @JavaStaticField(isFinal: true) - public var MEDIA_CONTENT_CONTROL: String - - @JavaStaticField(isFinal: true) - public var MODIFY_AUDIO_SETTINGS: String - - @JavaStaticField(isFinal: true) - public var MODIFY_PHONE_STATE: String - - @JavaStaticField(isFinal: true) - public var MOUNT_FORMAT_FILESYSTEMS: String - - @JavaStaticField(isFinal: true) - public var MOUNT_UNMOUNT_FILESYSTEMS: String - - @available(Android 33, *) - @JavaStaticField(isFinal: true) - public var NEARBY_WIFI_DEVICES: String - - @JavaStaticField(isFinal: true) - public var NFC: String - - @available(Android 33, *) - @JavaStaticField(isFinal: true) - public var NFC_PREFERRED_PAYMENT_INFO: String - - @JavaStaticField(isFinal: true) - public var NFC_TRANSACTION_EVENT: String - - @JavaStaticField(isFinal: true) - public var OVERRIDE_WIFI_CONFIG: String - - @JavaStaticField(isFinal: true) - public var PACKAGE_USAGE_STATS: String - - @JavaStaticField(isFinal: true) - public var PERSISTENT_ACTIVITY: String - - @available(Android 33, *) - @JavaStaticField(isFinal: true) - public var POST_NOTIFICATIONS: String - - @JavaStaticField(isFinal: true) - public var PROCESS_OUTGOING_CALLS: String - - @JavaStaticField(isFinal: true) - public var QUERY_ALL_PACKAGES: String - - @JavaStaticField(isFinal: true) - public var READ_ASSISTANT_APP_SEARCH_DATA: String - - @JavaStaticField(isFinal: true) - public var READ_BASIC_PHONE_STATE: String - - @JavaStaticField(isFinal: true) - public var READ_CALENDAR: String - - @JavaStaticField(isFinal: true) - public var READ_CALL_LOG: String - - @JavaStaticField(isFinal: true) - public var READ_CONTACTS: String - - @JavaStaticField(isFinal: true) - public var READ_EXTERNAL_STORAGE: String - - @JavaStaticField(isFinal: true) - public var READ_FRAME_BUFFER: String - - @JavaStaticField(isFinal: true) - public var READ_HOME_APP_SEARCH_DATA: String - - @JavaStaticField(isFinal: true) - public var READ_INPUT_STATE: String - - @JavaStaticField(isFinal: true) - public var READ_LOGS: String - - @available(Android 33, *) - @JavaStaticField(isFinal: true) - public var READ_MEDIA_AUDIO: String - - @available(Android 33, *) - @JavaStaticField(isFinal: true) - public var READ_MEDIA_IMAGES: String - - @available(Android 33, *) - @JavaStaticField(isFinal: true) - public var READ_MEDIA_VIDEO: String - - @available(Android 34, *) - @JavaStaticField(isFinal: true) - public var READ_MEDIA_VISUAL_USER_SELECTED: String - - @JavaStaticField(isFinal: true) - public var READ_NEARBY_STREAMING_POLICY: String - - @available(Android 26, *) - @JavaStaticField(isFinal: true) - public var READ_PHONE_NUMBERS: String - - @JavaStaticField(isFinal: true) - public var READ_PHONE_STATE: String - - @JavaStaticField(isFinal: true) - public var READ_PRECISE_PHONE_STATE: String - - @JavaStaticField(isFinal: true) - public var READ_SMS: String - - @JavaStaticField(isFinal: true) - public var READ_SYNC_SETTINGS: String - - @JavaStaticField(isFinal: true) - public var READ_SYNC_STATS: String - - @JavaStaticField(isFinal: true) - public var READ_VOICEMAIL: String - - @JavaStaticField(isFinal: true) - public var REBOOT: String - - @JavaStaticField(isFinal: true) - public var RECEIVE_BOOT_COMPLETED: String - - @JavaStaticField(isFinal: true) - public var RECEIVE_MMS: String - - @JavaStaticField(isFinal: true) - public var RECEIVE_SMS: String - - @JavaStaticField(isFinal: true) - public var RECEIVE_WAP_PUSH: String - - @JavaStaticField(isFinal: true) - public var RECORD_AUDIO: String - - @JavaStaticField(isFinal: true) - public var REORDER_TASKS: String - - @JavaStaticField(isFinal: true) - public var REQUEST_COMPANION_PROFILE_APP_STREAMING: String - - @JavaStaticField(isFinal: true) - public var REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION: String - - @JavaStaticField(isFinal: true) - public var REQUEST_COMPANION_PROFILE_COMPUTER: String - - @JavaStaticField(isFinal: true) - public var REQUEST_COMPANION_PROFILE_WATCH: String - - @JavaStaticField(isFinal: true) - public var REQUEST_COMPANION_RUN_IN_BACKGROUND: String - - @JavaStaticField(isFinal: true) - public var REQUEST_COMPANION_SELF_MANAGED: String - - @JavaStaticField(isFinal: true) - public var REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND: String - - @JavaStaticField(isFinal: true) - public var REQUEST_COMPANION_USE_DATA_IN_BACKGROUND: String - - @JavaStaticField(isFinal: true) - public var REQUEST_DELETE_PACKAGES: String - - @JavaStaticField(isFinal: true) - public var REQUEST_IGNORE_BATTERY_OPTIMIZATIONS: String - - @JavaStaticField(isFinal: true) - public var REQUEST_INSTALL_PACKAGES: String - - @JavaStaticField(isFinal: true) - public var REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE: String - - @available(Android 31, *) - @JavaStaticField(isFinal: true) - public var REQUEST_PASSWORD_COMPLEXITY: String - - @JavaStaticField(isFinal: true) - public var RESTART_PACKAGES: String - - @available(Android 31, *) - @JavaStaticField(isFinal: true) - public var SCHEDULE_EXACT_ALARM: String - - @JavaStaticField(isFinal: true) - public var SEND_RESPOND_VIA_MESSAGE: String - - @JavaStaticField(isFinal: true) - public var SEND_SMS: String - - @JavaStaticField(isFinal: true) - public var SET_ALARM: String - - @JavaStaticField(isFinal: true) - public var SET_ALWAYS_FINISH: String - - @JavaStaticField(isFinal: true) - public var SET_ANIMATION_SCALE: String - - @JavaStaticField(isFinal: true) - public var SET_DEBUG_APP: String - - @JavaStaticField(isFinal: true) - public var SET_PREFERRED_APPLICATIONS: String - - @JavaStaticField(isFinal: true) - public var SET_PROCESS_LIMIT: String - - @JavaStaticField(isFinal: true) - public var SET_TIME: String - - @JavaStaticField(isFinal: true) - public var SET_TIME_ZONE: String - - @JavaStaticField(isFinal: true) - public var SET_WALLPAPER: String - - @JavaStaticField(isFinal: true) - public var SET_WALLPAPER_HINTS: String - - @JavaStaticField(isFinal: true) - public var SIGNAL_PERSISTENT_PROCESSES: String - - @JavaStaticField(isFinal: true) - public var SMS_FINANCIAL_TRANSACTIONS: String - - @JavaStaticField(isFinal: true) - public var START_FOREGROUND_SERVICES_FROM_BACKGROUND: String - - @JavaStaticField(isFinal: true) - public var START_VIEW_APP_FEATURES: String - - @JavaStaticField(isFinal: true) - public var START_VIEW_PERMISSION_USAGE: String - - @JavaStaticField(isFinal: true) - public var STATUS_BAR: String - - @JavaStaticField(isFinal: true) - public var SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE: String - - @JavaStaticField(isFinal: true) - public var SYSTEM_ALERT_WINDOW: String - - @JavaStaticField(isFinal: true) - public var TRANSMIT_IR: String - - @JavaStaticField(isFinal: true) - public var UNINSTALL_SHORTCUT: String - - @JavaStaticField(isFinal: true) - public var UPDATE_DEVICE_STATS: String - - @JavaStaticField(isFinal: true) - public var UPDATE_PACKAGES_WITHOUT_USER_ACTION: String - - @JavaStaticField(isFinal: true) - public var USE_BIOMETRIC: String - - @available(Android 33, *) - @JavaStaticField(isFinal: true) - public var USE_EXACT_ALARM: String - - @JavaStaticField(isFinal: true) - public var USE_FINGERPRINT: String - - @available(Android 29, *) - @JavaStaticField(isFinal: true) - public var USE_FULL_SCREEN_INTENT: String - - @JavaStaticField(isFinal: true) - public var USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER: String - - @JavaStaticField(isFinal: true) - public var USE_SIP: String - - @available(Android 31, *) - @JavaStaticField(isFinal: true) - public var UWB_RANGING: String - - @JavaStaticField(isFinal: true) - public var VIBRATE: String - - @JavaStaticField(isFinal: true) - public var WAKE_LOCK: String - - @JavaStaticField(isFinal: true) - public var WRITE_APN_SETTINGS: String - - @JavaStaticField(isFinal: true) - public var WRITE_CALENDAR: String - - @JavaStaticField(isFinal: true) - public var WRITE_CALL_LOG: String - - @JavaStaticField(isFinal: true) - public var WRITE_CONTACTS: String - - @JavaStaticField(isFinal: true) - public var WRITE_EXTERNAL_STORAGE: String - - @JavaStaticField(isFinal: true) - public var WRITE_GSERVICES: String - - @JavaStaticField(isFinal: true) - public var WRITE_SECURE_SETTINGS: String - - @JavaStaticField(isFinal: true) - public var WRITE_SETTINGS: String - - @JavaStaticField(isFinal: true) - public var WRITE_SYNC_SETTINGS: String - - @JavaStaticField(isFinal: true) - public var WRITE_VOICEMAIL: String -} diff --git a/Sources/AndroidManifest/generated/Manifest.swift b/Sources/AndroidManifest/generated/Manifest.swift deleted file mode 100644 index 5ebb6b40..00000000 --- a/Sources/AndroidManifest/generated/Manifest.swift +++ /dev/null @@ -1,9 +0,0 @@ -// Auto-generated by Java-to-Swift wrapper generator. -import SwiftJava -import CSwiftJavaJNI - -@JavaClass("android.Manifest") -open class Manifest: JavaObject { - @JavaMethod - @_nonoverride public convenience init(environment: JNIEnvironment? = nil) -} diff --git a/Sources/AndroidManifest/swift-java.config b/Sources/AndroidManifest/swift-java.config deleted file mode 100644 index 579f5c8a..00000000 --- a/Sources/AndroidManifest/swift-java.config +++ /dev/null @@ -1,8 +0,0 @@ -{ - "classes" : { - "android.Manifest" : "Manifest", - "android.Manifest$permission" : "Manifest.Permission", - "android.Manifest$permission_group" : "Manifest.Permission.Group" - }, - "classpath" : "android.jar" -} From 67fe2d8baf3ca78ee124c7444368be1bd86701f4 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Thu, 26 Feb 2026 22:04:31 -0500 Subject: [PATCH 6/8] Add `Permission.check()` --- Sources/AndroidManifest/PermissionCheck.swift | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Sources/AndroidManifest/PermissionCheck.swift diff --git a/Sources/AndroidManifest/PermissionCheck.swift b/Sources/AndroidManifest/PermissionCheck.swift new file mode 100644 index 00000000..644c9095 --- /dev/null +++ b/Sources/AndroidManifest/PermissionCheck.swift @@ -0,0 +1,66 @@ +// +// Permission+Check.swift +// AndroidKit +// +// Created by Alsey Coleman Miller on 2/26/26. +// + +#if os(Android) +import Android +import AndroidNDK +#elseif canImport(Darwin) +import Darwin +#elseif canImport(Glibc) +import Glibc +#endif +import SystemPackage + +public extension Permission { + + /// Result of `APermissionManager_checkPermission`. + enum CheckStatus: Sendable, Equatable { + /// Permission is granted (`0`). + case granted + /// Permission is denied (`-1`). + case denied + /// Any other platform-specific status code. + case unknown(Int32) + } +} + +public extension Permission { + + /// Checks this permission for a specific process/user pair using + /// `APermissionManager_checkPermission`. + /// + /// - Parameters: + /// - pid: Process ID to evaluate. Defaults to the current process ID. + /// - uid: User ID to evaluate. Defaults to the current user ID. + /// - Returns: Permission check status. + func check( + pid: pid_t = getpid(), + uid: uid_t = getuid() + ) -> CheckStatus { + let result: Int32 + #if os(Android) + result = rawValue.withCString { + APermissionManager_checkPermission($0, pid, uid) + } + #else + result = -1 + #endif + switch result { + case 0: + return .granted + case -1: + return .denied + default: + return .unknown(result) + } + } + + /// Returns `true` when this permission is granted for the current process. + var isGranted: Bool { + check() == .granted + } +} From 9e5bd2807acdc3132a6a1a603908aac51bfea87d Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Thu, 26 Feb 2026 22:25:58 -0500 Subject: [PATCH 7/8] Add `Permission.Error` --- Sources/AndroidManifest/PermissionCheck.swift | 73 ++++++++++++++----- 1 file changed, 53 insertions(+), 20 deletions(-) diff --git a/Sources/AndroidManifest/PermissionCheck.swift b/Sources/AndroidManifest/PermissionCheck.swift index 644c9095..cfe34d28 100644 --- a/Sources/AndroidManifest/PermissionCheck.swift +++ b/Sources/AndroidManifest/PermissionCheck.swift @@ -13,18 +13,34 @@ import Darwin #elseif canImport(Glibc) import Glibc #endif -import SystemPackage public extension Permission { - /// Result of `APermissionManager_checkPermission`. - enum CheckStatus: Sendable, Equatable { + /// Permission State + enum CheckStatus: Int32, Sendable, Equatable { + /// Permission is granted (`0`). - case granted + case granted = 0 + /// Permission is denied (`-1`). - case denied - /// Any other platform-specific status code. - case unknown(Int32) + case denied = -1 + } + + enum Error: Int32, Swift.Error { + + /** + This is returned if the permission check encountered an unspecified error. + + The output result is unmodified. + */ + case unknown = -1 + + /** + This is returned if the permission check failed because the service is unavailable. + + The output result is unmodified. + */ + case serviceUnavailable = -2 } } @@ -40,27 +56,44 @@ public extension Permission { func check( pid: pid_t = getpid(), uid: uid_t = getuid() - ) -> CheckStatus { - let result: Int32 + ) throws(Permission.Error) -> CheckStatus { + try _check(pid: pid, uid: uid).get() + } + + /// Checks this permission for a specific process/user pair using + /// `APermissionManager_checkPermission`. + /// + /// - Parameters: + /// - pid: Process ID to evaluate. Defaults to the current process ID. + /// - uid: User ID to evaluate. Defaults to the current user ID. + /// - Returns: Permission check status. + internal func _check( + pid: pid_t = getpid(), + uid: uid_t = getuid() + ) -> Result { + var result: Int32 = -1 + let returnCode: Int32 #if os(Android) - result = rawValue.withCString { - APermissionManager_checkPermission($0, pid, uid) + returnCode = rawValue.withCString { + APermissionManager_checkPermission($0, pid, uid, &result) } #else - result = -1 + returnCode = -1 #endif - switch result { - case 0: - return .granted - case -1: - return .denied - default: - return .unknown(result) + guard returnCode != 0, let status = CheckStatus(rawValue: result) else { + return .failure(.init(rawValue: returnCode) ?? .unknown) } + return .success(status) } /// Returns `true` when this permission is granted for the current process. var isGranted: Bool { - check() == .granted + let status = _check() + switch status { + case .success(.granted): + return true + default: + return false + } } } From ef59889ab53803b21bfea79bd6bce94084d918a0 Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Thu, 26 Feb 2026 22:32:43 -0500 Subject: [PATCH 8/8] Fixed `AndroidBinderError` --- Sources/AndroidBinder/Error.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/AndroidBinder/Error.swift b/Sources/AndroidBinder/Error.swift index 54861199..6a2c1150 100644 --- a/Sources/AndroidBinder/Error.swift +++ b/Sources/AndroidBinder/Error.swift @@ -126,7 +126,7 @@ internal extension binder_status_t { return .failure(error) } - func mapError( + func mapError( as _: T.Type, file: StaticString = #file, function: StaticString = #function