├── .gitattributes
├── .github
└── FUNDING.yml
├── .gitignore
├── LICENSE
├── README.md
├── README
└── hero.png
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── AndroidUnitTest.java
│ ├── debug
│ └── res
│ │ ├── drawable-v26
│ │ └── app_icon_background.xml
│ │ └── xml-v25
│ │ └── shortcuts.xml
│ ├── foss
│ ├── java
│ │ └── me
│ │ │ └── tagavari
│ │ │ └── airmessage
│ │ │ ├── connection
│ │ │ └── comm5
│ │ │ │ └── ProxyConnect.kt
│ │ │ └── flavor
│ │ │ ├── CrashlyticsBridge.kt
│ │ │ ├── FirebaseAuthBridge.kt
│ │ │ ├── FragmentMessagingAttachmentsMaps.kt
│ │ │ ├── FragmentMessagingAttachmentsViewModelMaps.kt
│ │ │ ├── MLKitBridge.kt
│ │ │ ├── MapsBridge.kt
│ │ │ ├── PlaySecurityBridge.kt
│ │ │ ├── VHMessageComponentLocationMap.kt
│ │ │ └── WelcomeGoogleSignIn.kt
│ └── res
│ │ ├── layout
│ │ ├── fragment_attachments_location.xml
│ │ └── listitem_contentlocation_map.xml
│ │ ├── values-fr
│ │ └── strings.xml
│ │ ├── values-ja
│ │ └── strings.xml
│ │ └── values
│ │ └── strings.xml
│ ├── full
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── me
│ │ │ └── tagavari
│ │ │ └── airmessage
│ │ │ ├── activity
│ │ │ └── LocationPicker.java
│ │ │ ├── connection
│ │ │ └── comm5
│ │ │ │ └── ProxyConnect.java
│ │ │ ├── data
│ │ │ └── DatabaseExtensions.kt
│ │ │ ├── enums
│ │ │ └── LocationState.kt
│ │ │ ├── flavor
│ │ │ ├── CrashlyticsBridge.kt
│ │ │ ├── FirebaseAuthBridge.kt
│ │ │ ├── FragmentMessagingAttachmentsMaps.kt
│ │ │ ├── FragmentMessagingAttachmentsViewModelMaps.kt
│ │ │ ├── MLKitBridge.kt
│ │ │ ├── MapsBridge.kt
│ │ │ ├── PlaySecurityBridge.kt
│ │ │ ├── VHMessageComponentLocationMap.kt
│ │ │ └── WelcomeGoogleSignIn.kt
│ │ │ ├── fragment
│ │ │ └── FragmentOnboardingConnect.java
│ │ │ └── service
│ │ │ └── FCMService.kt
│ └── res
│ │ └── layout
│ │ ├── fragment_attachments_location.xml
│ │ └── listitem_contentlocation_map.xml
│ ├── fullRelease
│ └── google-services.default.json
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── me
│ │ │ └── tagavari
│ │ │ └── airmessage
│ │ │ ├── MainApplication.java
│ │ │ ├── activity
│ │ │ ├── BlockedAddresses.java
│ │ │ ├── CallHistory.kt
│ │ │ ├── Conversations.java
│ │ │ ├── CrashReport.java
│ │ │ ├── FaceTimeCall.kt
│ │ │ ├── ImageDraw.java
│ │ │ ├── Licenses.java
│ │ │ ├── MediaViewer.java
│ │ │ ├── Messaging.java
│ │ │ ├── NewFaceTime.kt
│ │ │ ├── NewMessage.java
│ │ │ ├── Onboarding.java
│ │ │ ├── Preferences.java
│ │ │ ├── ServerConfigStandalone.java
│ │ │ ├── ServerUpdate.kt
│ │ │ └── ShareHandler.java
│ │ │ ├── common
│ │ │ └── Blocks.java
│ │ │ ├── component
│ │ │ ├── ContactChip.java
│ │ │ ├── ContactListReactiveUpdate.java
│ │ │ └── ContactsRecyclerAdapter.java
│ │ │ ├── composite
│ │ │ ├── ActivityPlugin.java
│ │ │ ├── AppCompatActivityPlugin.java
│ │ │ ├── AppCompatCompositeActivity.java
│ │ │ └── CompositeActivity.java
│ │ │ ├── compositeplugin
│ │ │ ├── PluginConnectionService.java
│ │ │ ├── PluginConnectionServiceConfig.java
│ │ │ ├── PluginMessageBar.java
│ │ │ ├── PluginQNavigation.java
│ │ │ ├── PluginRXDisposable.java
│ │ │ └── PluginThemeUpdater.java
│ │ │ ├── connection
│ │ │ ├── CommunicationsManager.java
│ │ │ ├── CommunicationsManagerFactory.java
│ │ │ ├── ConnectionManager.java
│ │ │ ├── ConnectionOverride.java
│ │ │ ├── ConnectionTaskManager.java
│ │ │ ├── CookieBuilder.java
│ │ │ ├── DataProxy.java
│ │ │ ├── DataProxyListener.java
│ │ │ ├── MassRetrievalParams.java
│ │ │ ├── ProxyNoOp.java
│ │ │ ├── comm5
│ │ │ │ ├── AirPacker.java
│ │ │ │ ├── AirUnpacker.java
│ │ │ │ ├── ClientComm5.java
│ │ │ │ ├── ClientProtocol4.java
│ │ │ │ ├── ClientProtocol5.java
│ │ │ │ ├── EncryptedPacket.java
│ │ │ │ ├── ProtocolManager.java
│ │ │ │ ├── ProxyDirectTCP.java
│ │ │ │ ├── ProxyDirectTCPReader.java
│ │ │ │ └── ProxyDirectTCPWriter.java
│ │ │ ├── encryption
│ │ │ │ ├── EncryptionAES.java
│ │ │ │ └── EncryptionManager.java
│ │ │ ├── exception
│ │ │ │ ├── AMRemoteUpdateException.kt
│ │ │ │ ├── AMRequestException.java
│ │ │ │ └── LargeAllocationException.java
│ │ │ ├── listener
│ │ │ │ ├── CommunicationsManagerListener.java
│ │ │ │ └── ConnectionUpdateListener.java
│ │ │ ├── request
│ │ │ │ ├── ChatCreationResponseManager.java
│ │ │ │ ├── FileFetchRequest.java
│ │ │ │ ├── FileProcessingRequest.java
│ │ │ │ ├── FilePushRequest.java
│ │ │ │ ├── FileRemovalRequest.java
│ │ │ │ └── MassRetrievalRequest.java
│ │ │ └── task
│ │ │ │ ├── ChatResponseTask.java
│ │ │ │ ├── MessageUpdateTask.java
│ │ │ │ └── ModifierUpdateTask.java
│ │ │ ├── constants
│ │ │ ├── ColorConstants.java
│ │ │ ├── ExternalLinkConstants.java
│ │ │ ├── FileNameConstants.java
│ │ │ ├── MIMEConstants.java
│ │ │ ├── NetworkConstants.java
│ │ │ ├── RegexConstants.java
│ │ │ ├── SMSReceiverConstants.java
│ │ │ ├── TimingConstants.java
│ │ │ └── VersionConstants.kt
│ │ │ ├── contract
│ │ │ ├── ContractDefaultMessagingApp.kt
│ │ │ └── ContractNotificationRingtoneSelector.kt
│ │ │ ├── data
│ │ │ ├── DatabaseManager.java
│ │ │ ├── MessagesDataHelper.kt
│ │ │ ├── SharedPreferencesManager.java
│ │ │ ├── SharedPreferencesManager.kt
│ │ │ └── UserCacheHelper.kt
│ │ │ ├── enums
│ │ │ ├── AttachmentReqErrorCode.java
│ │ │ ├── AttachmentType.java
│ │ │ ├── ChatCreateErrorCode.java
│ │ │ ├── ConnectionErrorCode.java
│ │ │ ├── ConnectionFeature.java
│ │ │ ├── ConnectionMode.java
│ │ │ ├── ConnectionState.java
│ │ │ ├── ConversationItemType.java
│ │ │ ├── ConversationState.java
│ │ │ ├── FaceTimeInitiateCode.java
│ │ │ ├── FaceTimeLinkErrorCode.java
│ │ │ ├── GroupAction.java
│ │ │ ├── MassRetrievalErrorCode.java
│ │ │ ├── MessageComponentType.java
│ │ │ ├── MessageEdgeType.java
│ │ │ ├── MessagePreviewState.java
│ │ │ ├── MessagePreviewType.java
│ │ │ ├── MessageSendErrorCode.java
│ │ │ ├── MessageState.java
│ │ │ ├── MessageViewType.java
│ │ │ ├── ProxyType.java
│ │ │ ├── ServiceHandler.java
│ │ │ ├── ServiceType.java
│ │ │ ├── TapbackType.java
│ │ │ └── TrackableRequestCategory.java
│ │ │ ├── extension
│ │ │ ├── FragmentBackOverride.java
│ │ │ ├── FragmentCommunicationFaceTime.kt
│ │ │ └── FragmentCommunicationNetworkConfig.java
│ │ │ ├── fragment
│ │ │ ├── FragmentCallActive.kt
│ │ │ ├── FragmentCallPending.kt
│ │ │ ├── FragmentCommunication.kt
│ │ │ ├── FragmentDialogConnectAuth.kt
│ │ │ ├── FragmentMessagingAttachments.java
│ │ │ ├── FragmentMessagingDetails.java
│ │ │ ├── FragmentOnboardingManual.java
│ │ │ ├── FragmentOnboardingWelcome.java
│ │ │ └── FragmentSync.java
│ │ │ ├── helper
│ │ │ ├── AddressHelper.kt
│ │ │ ├── AttachmentStorageHelper.kt
│ │ │ ├── BitmapHelper.kt
│ │ │ ├── CalendarHelper.kt
│ │ │ ├── CollectionHelper.kt
│ │ │ ├── ColorHelper.kt
│ │ │ ├── ColorMathHelper.kt
│ │ │ ├── ConnectionServiceLaunchHelper.kt
│ │ │ ├── ContactHelper.kt
│ │ │ ├── ConversationBuildHelper.kt
│ │ │ ├── ConversationColorHelper.kt
│ │ │ ├── ConversationHelper.kt
│ │ │ ├── ConversationPreviewHelper.kt
│ │ │ ├── DataCompressionHelper.kt
│ │ │ ├── DataStreamHelper.kt
│ │ │ ├── ErrorDetailsHelper.kt
│ │ │ ├── ErrorLanguageHelper.kt
│ │ │ ├── ExternalStorageHelper.kt
│ │ │ ├── FileHelper.kt
│ │ │ ├── IntentHelper.kt
│ │ │ ├── LanguageHelper.kt
│ │ │ ├── LookAheadStreamIterator.kt
│ │ │ ├── MMSSMSHelper.kt
│ │ │ ├── MediaFileHelper.kt
│ │ │ ├── MessageSendHelper.kt
│ │ │ ├── MessageShapeHelper.kt
│ │ │ ├── NotificationHelper.kt
│ │ │ ├── PlatformHelper.kt
│ │ │ ├── ReactiveHelper.kt
│ │ │ ├── ResourceHelper.kt
│ │ │ ├── SendStyleHelper.kt
│ │ │ ├── ShortcutHelper.kt
│ │ │ ├── SmartReplyHelper.kt
│ │ │ ├── SoundHelper.kt
│ │ │ ├── StandardCompressionHelper.kt
│ │ │ ├── StringHelper.kt
│ │ │ ├── ThemeHelper.kt
│ │ │ ├── VersionHelper.kt
│ │ │ ├── ViewHelper.kt
│ │ │ └── WindowHelper.kt
│ │ │ ├── messaging
│ │ │ ├── AMConversationAction.kt
│ │ │ ├── AttachmentInfo.kt
│ │ │ ├── AttachmentPreview.kt
│ │ │ ├── ChatCreateAction.kt
│ │ │ ├── ChatMemberAction.kt
│ │ │ ├── ChatRenameAction.kt
│ │ │ ├── ConversationAction.kt
│ │ │ ├── ConversationInfo.kt
│ │ │ ├── ConversationItem.kt
│ │ │ ├── ConversationPreview.kt
│ │ │ ├── FileDisplayMetadata.kt
│ │ │ ├── FileDraft.kt
│ │ │ ├── FileLinked.kt
│ │ │ ├── MemberInfo.kt
│ │ │ ├── MessageComponent.kt
│ │ │ ├── MessageComponentText.kt
│ │ │ ├── MessageInfo.kt
│ │ │ ├── MessagePreviewInfo.kt
│ │ │ ├── StickerInfo.kt
│ │ │ ├── TapbackInfo.kt
│ │ │ ├── viewbinder
│ │ │ │ ├── VBConversation.kt
│ │ │ │ └── VBMessageComponent.kt
│ │ │ └── viewholder
│ │ │ │ ├── VHAttachmentLinked.kt
│ │ │ │ ├── VHAttachmentQueued.kt
│ │ │ │ ├── VHAttachmentTileContent.kt
│ │ │ │ ├── VHAttachmentTileContentAudio.kt
│ │ │ │ ├── VHAttachmentTileContentContact.kt
│ │ │ │ ├── VHAttachmentTileContentDocument.kt
│ │ │ │ ├── VHAttachmentTileContentLocation.kt
│ │ │ │ ├── VHAttachmentTileContentMedia.kt
│ │ │ │ ├── VHConversationActions.kt
│ │ │ │ ├── VHConversationBase.kt
│ │ │ │ ├── VHConversationDetailed.kt
│ │ │ │ ├── VHMessageAction.kt
│ │ │ │ ├── VHMessageComponent.kt
│ │ │ │ ├── VHMessageComponentAttachment.kt
│ │ │ │ ├── VHMessageComponentAudio.kt
│ │ │ │ ├── VHMessageComponentContact.kt
│ │ │ │ ├── VHMessageComponentDocument.kt
│ │ │ │ ├── VHMessageComponentLocation.kt
│ │ │ │ ├── VHMessageComponentText.kt
│ │ │ │ ├── VHMessageComponentVisual.kt
│ │ │ │ ├── VHMessagePreview.kt
│ │ │ │ ├── VHMessagePreviewLink.kt
│ │ │ │ └── VHMessageStructure.kt
│ │ │ ├── receiver
│ │ │ ├── DefaultMessagingAppChangedReceiver.java
│ │ │ ├── ExternalMessagingProviderChangedReceiver.java
│ │ │ ├── MessageNotificationActionReceiver.java
│ │ │ ├── MessageNotificationDeleteReceiver.java
│ │ │ ├── StartBootReceiver.java
│ │ │ ├── TextMMSReceivedReceiver.java
│ │ │ ├── TextMMSSentReceiver.java
│ │ │ ├── TextSMSDeliveredReceiver.java
│ │ │ ├── TextSMSReceivedReceiver.java
│ │ │ └── TextSMSSentReceiver.java
│ │ │ ├── redux
│ │ │ ├── ReduxEmitterNetwork.kt
│ │ │ ├── ReduxEventAttachmentDownload.kt
│ │ │ ├── ReduxEventAttachmentUpload.kt
│ │ │ ├── ReduxEventConnection.kt
│ │ │ ├── ReduxEventFaceTime.kt
│ │ │ ├── ReduxEventMassRetrieval.kt
│ │ │ ├── ReduxEventMessaging.kt
│ │ │ ├── ReduxEventRemoteUpdate.kt
│ │ │ ├── ReduxEventTextImport.kt
│ │ │ ├── ReduxReceiverFaceTime.kt
│ │ │ ├── ReduxReceiverNotification.kt
│ │ │ └── ReduxReceiverShortcut.kt
│ │ │ ├── service
│ │ │ ├── ConnectionService.java
│ │ │ ├── SystemMessageImportService.java
│ │ │ ├── TextHeadlessService.java
│ │ │ └── UriExportService.java
│ │ │ ├── task
│ │ │ ├── ContactsTask.java
│ │ │ ├── ConversationActionTask.java
│ │ │ ├── DraftActionTask.java
│ │ │ ├── FileQueueTask.java
│ │ │ ├── MessageActionTask.java
│ │ │ └── RichPreviewTask.java
│ │ │ ├── util
│ │ │ ├── ActivityStatusUpdate.kt
│ │ │ ├── AddressInfo.kt
│ │ │ ├── AnimatingInsetsCallback.kt
│ │ │ ├── AudioPlaybackManager.kt
│ │ │ ├── CompoundErrorDetails.kt
│ │ │ ├── ConnectionParams.kt
│ │ │ ├── ContactInfo.kt
│ │ │ ├── ConversationTarget.kt
│ │ │ ├── ConversationValueUpdateResult.kt
│ │ │ ├── CustomTabsLinkTransformationMethod.kt
│ │ │ ├── CustomTabsURLSpan.kt
│ │ │ ├── DirectConnectionDetails.kt
│ │ │ ├── DisposableViewHolder.kt
│ │ │ ├── IndexedItem.kt
│ │ │ ├── LatLngInfo.kt
│ │ │ ├── ModifierMetadata.kt
│ │ │ ├── NotificationSummaryMessage.kt
│ │ │ ├── ReplaceInsertResult.kt
│ │ │ ├── RequestSubject.kt
│ │ │ ├── ServerUpdateData.kt
│ │ │ ├── TapbackDisplayData.kt
│ │ │ ├── TaskManager.kt
│ │ │ ├── TaskManagerLong.kt
│ │ │ ├── TaskManagerLongBehavior.kt
│ │ │ ├── TrackableRequest.kt
│ │ │ ├── TransferredConversation.kt
│ │ │ └── Union.kt
│ │ │ ├── view
│ │ │ ├── AppleEffectView.java
│ │ │ ├── InvisibleInkView.java
│ │ │ ├── MultiLineSwitchPreference.java
│ │ │ ├── OverScrollScrollView.java
│ │ │ ├── RoundedFrameLayout.java
│ │ │ ├── RoundedImageView.java
│ │ │ └── VisualizerView.java
│ │ │ └── worker
│ │ │ └── SystemMessageCleanupWorker.kt
│ └── res
│ │ ├── anim
│ │ ├── activity_slide_up.xml
│ │ ├── fade_in.xml
│ │ ├── fade_in_delayed.xml
│ │ ├── fade_in_light.xml
│ │ ├── fade_out.xml
│ │ ├── fade_out_light.xml
│ │ ├── freeze.xml
│ │ ├── messagedetails_slide_in_bottom.xml
│ │ ├── messagedetails_slide_out_bottom.xml
│ │ ├── messagestatus_slide_in_bottom.xml
│ │ ├── messagestatus_slide_out_top.xml
│ │ ├── windowslide_in.xml
│ │ ├── windowslide_out.xml
│ │ ├── windowslideback_in.xml
│ │ └── windowslideback_out.xml
│ │ ├── drawable-hdpi
│ │ ├── onboarding_download_medium.png
│ │ ├── onboarding_download_short.png
│ │ ├── onboarding_download_tall.png
│ │ └── promo_logo.png
│ │ ├── drawable-mdpi
│ │ ├── onboarding_download_medium.png
│ │ ├── onboarding_download_short.png
│ │ ├── onboarding_download_tall.png
│ │ └── promo_logo.png
│ │ ├── drawable-night-hdpi
│ │ ├── onboarding_download_medium.png
│ │ ├── onboarding_download_short.png
│ │ └── onboarding_download_tall.png
│ │ ├── drawable-night-mdpi
│ │ ├── onboarding_download_medium.png
│ │ ├── onboarding_download_short.png
│ │ └── onboarding_download_tall.png
│ │ ├── drawable-night-xhdpi
│ │ ├── onboarding_download_medium.png
│ │ ├── onboarding_download_short.png
│ │ └── onboarding_download_tall.png
│ │ ├── drawable-night-xxhdpi
│ │ ├── onboarding_download_medium.png
│ │ ├── onboarding_download_short.png
│ │ └── onboarding_download_tall.png
│ │ ├── drawable-night-xxxhdpi
│ │ ├── onboarding_download_medium.png
│ │ ├── onboarding_download_short.png
│ │ └── onboarding_download_tall.png
│ │ ├── drawable-v26
│ │ ├── app_icon_background.xml
│ │ └── appshortcut_add.xml
│ │ ├── drawable-xhdpi
│ │ ├── onboarding_download_medium.png
│ │ ├── onboarding_download_short.png
│ │ ├── onboarding_download_tall.png
│ │ └── promo_logo.png
│ │ ├── drawable-xxhdpi
│ │ ├── onboarding_download_medium.png
│ │ ├── onboarding_download_short.png
│ │ ├── onboarding_download_tall.png
│ │ └── promo_logo.png
│ │ ├── drawable-xxxhdpi
│ │ ├── onboarding_download_medium.png
│ │ ├── onboarding_download_short.png
│ │ ├── onboarding_download_tall.png
│ │ └── promo_logo.png
│ │ ├── drawable
│ │ ├── add.xml
│ │ ├── add_circle.xml
│ │ ├── add_rounded.xml
│ │ ├── appear_bottomscrim.xml
│ │ ├── appear_bottomshadow.xml
│ │ ├── appear_topscrim.xml
│ │ ├── appear_topshadow.xml
│ │ ├── appshortcut_add.xml
│ │ ├── appshortcut_add_foreground.xml
│ │ ├── archive.xml
│ │ ├── archive_outlined.xml
│ │ ├── archive_outlined_actionmode.xml
│ │ ├── arrow_back.xml
│ │ ├── attach.xml
│ │ ├── audiotile_progressbar_background.xml
│ │ ├── audiotile_progressbar_circular.xml
│ │ ├── background_amoledsamsung.xml
│ │ ├── background_filler.xml
│ │ ├── background_roundedcrashreport.xml
│ │ ├── brush.xml
│ │ ├── button_mediaplayer_pause.xml
│ │ ├── button_mediaplayer_play.xml
│ │ ├── call.xml
│ │ ├── call_end.xml
│ │ ├── camera.xml
│ │ ├── camera_outlined.xml
│ │ ├── cancel.xml
│ │ ├── chat.xml
│ │ ├── chat_rounded.xml
│ │ ├── check.xml
│ │ ├── check_circle.xml
│ │ ├── check_circle_outline.xml
│ │ ├── chevron_down.xml
│ │ ├── chevron_down_rounded.xml
│ │ ├── chevron_left.xml
│ │ ├── chevron_right.xml
│ │ ├── chip_tapback.xml
│ │ ├── circle.xml
│ │ ├── circle_borderdivider.xml
│ │ ├── circle_clickabledark.xml
│ │ ├── close.xml
│ │ ├── close_circle.xml
│ │ ├── close_control.xml
│ │ ├── contacts.xml
│ │ ├── copy.xml
│ │ ├── create.xml
│ │ ├── create_outlined.xml
│ │ ├── delete.xml
│ │ ├── delete_outlined.xml
│ │ ├── delete_outlined_actionmode.xml
│ │ ├── dialog_bottomsheet.xml
│ │ ├── dialpad.xml
│ │ ├── disconnection.xml
│ │ ├── dislike.xml
│ │ ├── dislike_rounded.xml
│ │ ├── divider_replysuggestions.xml
│ │ ├── download.xml
│ │ ├── download_outlined.xml
│ │ ├── download_rounded.xml
│ │ ├── draft_close_circle.xml
│ │ ├── drawable_handle.xml
│ │ ├── email.xml
│ │ ├── error.xml
│ │ ├── ethernetcable.xml
│ │ ├── excited.xml
│ │ ├── excited_rounded.xml
│ │ ├── exclamation.xml
│ │ ├── exclamation_rounded.xml
│ │ ├── facetime.xml
│ │ ├── facetime_outline.xml
│ │ ├── file.xml
│ │ ├── file_document.xml
│ │ ├── file_document_outlined.xml
│ │ ├── file_msexcel.xml
│ │ ├── file_mspowerpoint.xml
│ │ ├── file_msword.xml
│ │ ├── file_outlined.xml
│ │ ├── file_pdf.xml
│ │ ├── file_user.xml
│ │ ├── file_xml.xml
│ │ ├── file_zip.xml
│ │ ├── gallery.xml
│ │ ├── gallery_outlined.xml
│ │ ├── gif.xml
│ │ ├── help_outlined.xml
│ │ ├── ic_airmessage_update.xml
│ │ ├── ic_feature_airmessage.xml
│ │ ├── ic_feature_airmessage_square.xml
│ │ ├── ic_feature_macmini.xml
│ │ ├── ic_feature_macmini_square.xml
│ │ ├── ic_google.xml
│ │ ├── info.xml
│ │ ├── info_outlined.xml
│ │ ├── keyboard.xml
│ │ ├── keyboard_outlined.xml
│ │ ├── keyboard_rounded.xml
│ │ ├── like.xml
│ │ ├── like_rounded.xml
│ │ ├── link.xml
│ │ ├── location.xml
│ │ ├── location_outline.xml
│ │ ├── location_round.xml
│ │ ├── lock_alert.xml
│ │ ├── lock_outlined.xml
│ │ ├── love.xml
│ │ ├── love_rounded.xml
│ │ ├── mapindicator.xml
│ │ ├── message.xml
│ │ ├── message_alert.xml
│ │ ├── message_bridge.xml
│ │ ├── message_download.xml
│ │ ├── message_google.xml
│ │ ├── message_plus.xml
│ │ ├── message_push.xml
│ │ ├── message_push_group.xml
│ │ ├── message_sms.xml
│ │ ├── microphone.xml
│ │ ├── microphone_outlined.xml
│ │ ├── movie.xml
│ │ ├── movie_outlined.xml
│ │ ├── next.xml
│ │ ├── notifications_off.xml
│ │ ├── notifications_off_outlined.xml
│ │ ├── notifications_off_outlined_actionmode.xml
│ │ ├── notifications_on.xml
│ │ ├── notifications_on_outlined.xml
│ │ ├── notifications_on_outlined_actionmode.xml
│ │ ├── notifications_outlined.xml
│ │ ├── open.xml
│ │ ├── open_rounded.xml
│ │ ├── overflow.xml
│ │ ├── palette.xml
│ │ ├── palette_outlined.xml
│ │ ├── pause.xml
│ │ ├── pause_outlined.xml
│ │ ├── pause_rounded.xml
│ │ ├── person_add_round.xml
│ │ ├── pin.xml
│ │ ├── play.xml
│ │ ├── play_circle.xml
│ │ ├── play_circle_rounded.xml
│ │ ├── play_outlined.xml
│ │ ├── play_rounded.xml
│ │ ├── progressbar_rounded.xml
│ │ ├── push.xml
│ │ ├── push_rounded.xml
│ │ ├── question.xml
│ │ ├── question_rounded.xml
│ │ ├── rectangle_chatpreview.xml
│ │ ├── rectangle_chatpreviewfull.xml
│ │ ├── rectangle_messagebubble.xml
│ │ ├── refresh.xml
│ │ ├── replay.xml
│ │ ├── reply.xml
│ │ ├── restart.xml
│ │ ├── ring.xml
│ │ ├── rounded_button_highlight.xml
│ │ ├── rounded_button_highlight_ripple.xml
│ │ ├── rounded_circle.xml
│ │ ├── rounded_contentpane.xml
│ │ ├── rounded_contenttile.xml
│ │ ├── rounded_inputbar.xml
│ │ ├── rounded_rectangle.xml
│ │ ├── rounded_rectangle_highlight.xml
│ │ ├── rounded_rectangle_highlight_ripple.xml
│ │ ├── rounded_rectangle_ripple.xml
│ │ ├── rounded_rectangle_top.xml
│ │ ├── rounded_selectable_contenttile.xml
│ │ ├── rounded_selectable_contenttile_bottom.xml
│ │ ├── rounded_selectable_contenttile_top.xml
│ │ ├── rounded_selectable_inputbar.xml
│ │ ├── rounded_sheet.xml
│ │ ├── save.xml
│ │ ├── search.xml
│ │ ├── selectable_rounded.xml
│ │ ├── send.xml
│ │ ├── share_outlined.xml
│ │ ├── stroke_color.xml
│ │ ├── sync.xml
│ │ ├── sync_problem.xml
│ │ ├── text_fields.xml
│ │ ├── unarchive.xml
│ │ ├── unarchive_outlined.xml
│ │ ├── unarchive_outlined_actionmode.xml
│ │ ├── undo.xml
│ │ ├── update.xml
│ │ ├── upload.xml
│ │ ├── upload_rounded.xml
│ │ ├── user.xml
│ │ ├── user_divider.xml
│ │ ├── videocam_outlined.xml
│ │ ├── volume.xml
│ │ ├── volume_outlined.xml
│ │ ├── warning.xml
│ │ ├── web.xml
│ │ ├── wifi.xml
│ │ └── wifi_off.xml
│ │ ├── layout-land
│ │ └── fragment_serversync.xml
│ │ ├── layout-large
│ │ └── activity_onboarding.xml
│ │ ├── layout
│ │ ├── activity_blockedaddresses.xml
│ │ ├── activity_blockedaddresses_listitem.xml
│ │ ├── activity_callhistory.xml
│ │ ├── activity_conversations.xml
│ │ ├── activity_crashreport.xml
│ │ ├── activity_facetimecall.xml
│ │ ├── activity_imagedraw.xml
│ │ ├── activity_licenses.xml
│ │ ├── activity_locationpicker.xml
│ │ ├── activity_mediaviewer.xml
│ │ ├── activity_messaging.xml
│ │ ├── activity_newfacetime.xml
│ │ ├── activity_newmessage.xml
│ │ ├── activity_onboarding.xml
│ │ ├── activity_preferences.xml
│ │ ├── activity_serverupdate.xml
│ │ ├── activity_share.xml
│ │ ├── appbar_search.xml
│ │ ├── chip_tapback.xml
│ │ ├── chip_user.xml
│ │ ├── dialog_advancedsync.xml
│ │ ├── dialog_colorpicker.xml
│ │ ├── dialog_colorpicker_item.xml
│ │ ├── dialog_connectauth.xml
│ │ ├── dialog_connectpassword.xml
│ │ ├── dialog_renamechat.xml
│ │ ├── dialog_simplelist.xml
│ │ ├── dialog_simplescroll.xml
│ │ ├── ext_mediaviewer_exoplayer.xml
│ │ ├── fragment_attachments.xml
│ │ ├── fragment_callactive.xml
│ │ ├── fragment_callpending.xml
│ │ ├── fragment_messagingdetails.xml
│ │ ├── fragment_onboarding_connect.xml
│ │ ├── fragment_onboarding_manual.xml
│ │ ├── fragment_onboarding_welcome.xml
│ │ ├── fragment_serversync.xml
│ │ ├── layout_advancedsync_filefilter.xml
│ │ ├── layout_conversationdetailsrename.xml
│ │ ├── layout_conversationicon.xml
│ │ ├── layout_infobar.xml
│ │ ├── layout_messagepreview_linklarge.xml
│ │ ├── layout_stickercontainer.xml
│ │ ├── layout_tapbackcontainer.xml
│ │ ├── listitem_action.xml
│ │ ├── listitem_attachment_actiontile.xml
│ │ ├── listitem_attachment_actiontile_double.xml
│ │ ├── listitem_attachment_audiotile.xml
│ │ ├── listitem_attachment_contacttile.xml
│ │ ├── listitem_attachment_documenttile.xml
│ │ ├── listitem_attachment_linktile.xml
│ │ ├── listitem_attachment_locationtile.xml
│ │ ├── listitem_attachment_mediatile.xml
│ │ ├── listitem_attachment_overflow.xml
│ │ ├── listitem_attachment_queuetile.xml
│ │ ├── listitem_attachment_tileselection.xml
│ │ ├── listitem_contact.xml
│ │ ├── listitem_contact_sendheader.xml
│ │ ├── listitem_contentaudio.xml
│ │ ├── listitem_contentcontact.xml
│ │ ├── listitem_contentlocation.xml
│ │ ├── listitem_contentstructure.xml
│ │ ├── listitem_contenttext.xml
│ │ ├── listitem_contentvisual.xml
│ │ ├── listitem_conversation.xml
│ │ ├── listitem_conversation_icon1.xml
│ │ ├── listitem_conversation_icon2.xml
│ │ ├── listitem_conversation_icon3.xml
│ │ ├── listitem_conversation_icon4.xml
│ │ ├── listitem_conversation_simple.xml
│ │ ├── listitem_loading.xml
│ │ ├── listitem_mediaviewer_image.xml
│ │ ├── listitem_mediaviewer_video.xml
│ │ ├── listitem_member.xml
│ │ ├── listitem_message.xml
│ │ ├── listitem_replysuggestions.xml
│ │ ├── listitem_replysuggestions_item.xml
│ │ ├── listitem_servicechip.xml
│ │ ├── listitem_serviceselection.xml
│ │ ├── listitem_subheader.xml
│ │ ├── listitem_tapbackinfo_header.xml
│ │ ├── listitem_tapbackinfo_user.xml
│ │ ├── popup_userchip.xml
│ │ └── reference_user.xml
│ │ ├── menu
│ │ ├── menu_blockedaddresses.xml
│ │ ├── menu_conversation_actionmode.xml
│ │ ├── menu_conversationitem_contextual.xml
│ │ ├── menu_conversations.xml
│ │ ├── menu_help.xml
│ │ ├── menu_mediaviewer.xml
│ │ ├── menu_messaging.xml
│ │ └── menu_messaginginfo.xml
│ │ ├── mipmap-anydpi-v26
│ │ └── app_icon.xml
│ │ ├── mipmap-hdpi
│ │ ├── app_icon.png
│ │ └── app_icon_foreground.png
│ │ ├── mipmap-mdpi
│ │ ├── app_icon.png
│ │ └── app_icon_foreground.png
│ │ ├── mipmap-xhdpi
│ │ ├── app_icon.png
│ │ └── app_icon_foreground.png
│ │ ├── mipmap-xxhdpi
│ │ ├── app_icon.png
│ │ └── app_icon_foreground.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── app_icon.png
│ │ └── app_icon_foreground.png
│ │ ├── raw
│ │ ├── facetime_inject_css.css
│ │ ├── facetime_inject_javascript.js
│ │ ├── license_bouncycastle.txt
│ │ ├── license_freebsd.txt
│ │ ├── map_dark.json
│ │ ├── map_light.json
│ │ ├── map_plaindark.json
│ │ ├── map_plainlight.json
│ │ ├── message_error.wav
│ │ ├── message_in.wav
│ │ ├── message_out.wav
│ │ ├── message_received.wav
│ │ ├── message_sent.wav
│ │ ├── notification_ding.wav
│ │ ├── recording_end.wav
│ │ └── recording_start.wav
│ │ ├── values-fr
│ │ └── strings.xml
│ │ ├── values-ja
│ │ └── strings.xml
│ │ ├── values-ldrtl
│ │ └── vars.xml
│ │ ├── values-night
│ │ ├── colors.xml
│ │ ├── styles.xml
│ │ └── vars.xml
│ │ ├── values-v27
│ │ └── styles.xml
│ │ ├── values-v29
│ │ └── styles.xml
│ │ ├── values
│ │ ├── attrs.xml
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── library_definitions.xml
│ │ ├── license_definitions.xml
│ │ ├── preference_names.xml
│ │ ├── strings.xml
│ │ ├── styles.xml
│ │ ├── tags.xml
│ │ └── vars.xml
│ │ ├── xml-v25
│ │ └── shortcuts.xml
│ │ ├── xml-v26
│ │ └── preferences_notification.xml
│ │ └── xml
│ │ ├── automotive_app_desc.xml
│ │ ├── backup_rules.xml
│ │ ├── preferences_account.xml
│ │ ├── preferences_footer.xml
│ │ ├── preferences_main.xml
│ │ ├── preferences_notification.xml
│ │ ├── preferences_server.xml
│ │ └── provider_paths.xml
│ └── test
│ └── java
│ └── me
│ └── tagavari
│ └── airmessage
│ ├── AddressTest.java
│ ├── CalendarTest.java
│ ├── CollectionTest.java
│ ├── ProcessingTest.java
│ └── StringTest.java
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── lib
└── android-smsmms
│ ├── .gitignore
│ ├── README.md
│ ├── android-messaging.png
│ ├── build.gradle
│ ├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── library
│ ├── build.gradle
│ ├── gradle.properties
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ ├── android
│ │ │ ├── annotation
│ │ │ │ └── SdkConstant.java
│ │ │ ├── database
│ │ │ │ └── sqlite
│ │ │ │ │ └── SqliteWrapper.java
│ │ │ ├── net
│ │ │ │ ├── DhcpInfoInternal.java
│ │ │ │ ├── IConnectivityManager.java
│ │ │ │ ├── INetworkPolicyListener.java
│ │ │ │ ├── INetworkPolicyManager.java
│ │ │ │ ├── LinkAddress.java
│ │ │ │ ├── LinkCapabilities.java
│ │ │ │ ├── LinkProperties.java
│ │ │ │ ├── NetworkIdentity.java
│ │ │ │ ├── NetworkPolicy.java
│ │ │ │ ├── NetworkPolicyManager.java
│ │ │ │ ├── NetworkQuotaInfo.java
│ │ │ │ ├── NetworkState.java
│ │ │ │ ├── NetworkTemplate.java
│ │ │ │ ├── NetworkUtilsHelper.java
│ │ │ │ ├── ProxyProperties.java
│ │ │ │ └── RouteInfo.java
│ │ │ └── provider
│ │ │ │ └── Downloads.java
│ │ ├── com
│ │ │ ├── android
│ │ │ │ ├── i18n
│ │ │ │ │ └── phonenumbers
│ │ │ │ │ │ ├── NumberParseException.java
│ │ │ │ │ │ ├── PhoneNumberUtil.java
│ │ │ │ │ │ └── Phonenumber.java
│ │ │ │ ├── internal
│ │ │ │ │ ├── annotations
│ │ │ │ │ │ └── VisibleForTesting.java
│ │ │ │ │ ├── net
│ │ │ │ │ │ ├── LegacyVpnInfo.java
│ │ │ │ │ │ ├── VpnConfig.java
│ │ │ │ │ │ └── VpnProfile.java
│ │ │ │ │ ├── telephony
│ │ │ │ │ │ ├── EncodeException.java
│ │ │ │ │ │ ├── GsmAlphabet.java
│ │ │ │ │ │ ├── IccUtils.java
│ │ │ │ │ │ ├── SmsConstants.java
│ │ │ │ │ │ └── TelephonyProperties.java
│ │ │ │ │ └── util
│ │ │ │ │ │ ├── ArrayUtils.java
│ │ │ │ │ │ ├── Objects.java
│ │ │ │ │ │ └── Preconditions.java
│ │ │ │ └── mms
│ │ │ │ │ ├── MmsConfig.java
│ │ │ │ │ ├── dom
│ │ │ │ │ ├── AttrImpl.java
│ │ │ │ │ ├── DocumentImpl.java
│ │ │ │ │ ├── ElementImpl.java
│ │ │ │ │ ├── NamedNodeMapImpl.java
│ │ │ │ │ ├── NodeImpl.java
│ │ │ │ │ ├── NodeListImpl.java
│ │ │ │ │ ├── events
│ │ │ │ │ │ ├── EventImpl.java
│ │ │ │ │ │ └── EventTargetImpl.java
│ │ │ │ │ └── smil
│ │ │ │ │ │ ├── ElementParallelTimeContainerImpl.java
│ │ │ │ │ │ ├── ElementSequentialTimeContainerImpl.java
│ │ │ │ │ │ ├── ElementTimeContainerImpl.java
│ │ │ │ │ │ ├── ElementTimeImpl.java
│ │ │ │ │ │ ├── SmilDocumentImpl.java
│ │ │ │ │ │ ├── SmilElementImpl.java
│ │ │ │ │ │ ├── SmilLayoutElementImpl.java
│ │ │ │ │ │ ├── SmilMediaElementImpl.java
│ │ │ │ │ │ ├── SmilParElementImpl.java
│ │ │ │ │ │ ├── SmilPlayer.java
│ │ │ │ │ │ ├── SmilRefElementImpl.java
│ │ │ │ │ │ ├── SmilRegionElementImpl.java
│ │ │ │ │ │ ├── SmilRegionMediaElementImpl.java
│ │ │ │ │ │ ├── SmilRootLayoutElementImpl.java
│ │ │ │ │ │ ├── TimeImpl.java
│ │ │ │ │ │ ├── TimeListImpl.java
│ │ │ │ │ │ └── parser
│ │ │ │ │ │ ├── SmilContentHandler.java
│ │ │ │ │ │ ├── SmilXmlParser.java
│ │ │ │ │ │ └── SmilXmlSerializer.java
│ │ │ │ │ ├── layout
│ │ │ │ │ ├── HVGALayoutParameters.java
│ │ │ │ │ ├── LayoutManager.java
│ │ │ │ │ └── LayoutParameters.java
│ │ │ │ │ ├── logs
│ │ │ │ │ └── LogTag.java
│ │ │ │ │ ├── service_alt
│ │ │ │ │ ├── ApnSettings.java
│ │ │ │ │ ├── DownloadRequest.java
│ │ │ │ │ ├── MmsConfig.java
│ │ │ │ │ ├── MmsConfigManager.java
│ │ │ │ │ ├── MmsConfigXmlProcessor.java
│ │ │ │ │ ├── MmsHttpClient.java
│ │ │ │ │ ├── MmsNetworkManager.java
│ │ │ │ │ ├── MmsRequest.java
│ │ │ │ │ ├── MmsRequestManager.java
│ │ │ │ │ ├── PhoneUtils.java
│ │ │ │ │ ├── SendRequest.java
│ │ │ │ │ ├── SubscriptionIdChecker.java
│ │ │ │ │ ├── SystemPropertiesProxy.java
│ │ │ │ │ └── exception
│ │ │ │ │ │ ├── ApnException.java
│ │ │ │ │ │ ├── MmsHttpException.java
│ │ │ │ │ │ └── MmsNetworkException.java
│ │ │ │ │ ├── transaction
│ │ │ │ │ ├── AbstractRetryScheme.java
│ │ │ │ │ ├── DefaultRetryScheme.java
│ │ │ │ │ ├── DownloadManager.java
│ │ │ │ │ ├── HttpUtils.java
│ │ │ │ │ ├── MessageSender.java
│ │ │ │ │ ├── MessageStatusReceiver.java
│ │ │ │ │ ├── MessageStatusService.java
│ │ │ │ │ ├── MmsMessageSender.java
│ │ │ │ │ ├── MmsPushOutboxMessages.java
│ │ │ │ │ ├── MmsSystemEventReceiver.java
│ │ │ │ │ ├── NotificationTransaction.java
│ │ │ │ │ ├── Observable.java
│ │ │ │ │ ├── Observer.java
│ │ │ │ │ ├── ProgressCallbackEntity.java
│ │ │ │ │ ├── PushReceiver.java
│ │ │ │ │ ├── ReadRecTransaction.java
│ │ │ │ │ ├── RetrieveTransaction.java
│ │ │ │ │ ├── RetryScheduler.java
│ │ │ │ │ ├── SendTransaction.java
│ │ │ │ │ ├── Transaction.java
│ │ │ │ │ ├── TransactionBundle.java
│ │ │ │ │ ├── TransactionService.java
│ │ │ │ │ ├── TransactionSettings.java
│ │ │ │ │ └── TransactionState.java
│ │ │ │ │ └── util
│ │ │ │ │ ├── DownloadManager.java
│ │ │ │ │ ├── ExternalLogger.java
│ │ │ │ │ ├── RateController.java
│ │ │ │ │ └── SendingProgressTokenManager.java
│ │ │ ├── google
│ │ │ │ └── android
│ │ │ │ │ ├── collect
│ │ │ │ │ └── Sets.java
│ │ │ │ │ └── mms
│ │ │ │ │ ├── APN.java
│ │ │ │ │ ├── APNHelper.java
│ │ │ │ │ ├── ContentType.java
│ │ │ │ │ ├── InvalidHeaderValueException.java
│ │ │ │ │ ├── MMSPart.java
│ │ │ │ │ ├── MmsException.java
│ │ │ │ │ ├── pdu_alt
│ │ │ │ │ ├── AcknowledgeInd.java
│ │ │ │ │ ├── Base64.java
│ │ │ │ │ ├── CharacterSets.java
│ │ │ │ │ ├── DeliveryInd.java
│ │ │ │ │ ├── EncodedStringValue.java
│ │ │ │ │ ├── GenericPdu.java
│ │ │ │ │ ├── MultimediaMessagePdu.java
│ │ │ │ │ ├── NotificationInd.java
│ │ │ │ │ ├── NotifyRespInd.java
│ │ │ │ │ ├── PduBody.java
│ │ │ │ │ ├── PduComposer.java
│ │ │ │ │ ├── PduContentTypes.java
│ │ │ │ │ ├── PduHeaders.java
│ │ │ │ │ ├── PduParser.java
│ │ │ │ │ ├── PduPart.java
│ │ │ │ │ ├── PduPersister.java
│ │ │ │ │ ├── QuotedPrintable.java
│ │ │ │ │ ├── ReadOrigInd.java
│ │ │ │ │ ├── ReadRecInd.java
│ │ │ │ │ ├── RetrieveConf.java
│ │ │ │ │ ├── SendConf.java
│ │ │ │ │ └── SendReq.java
│ │ │ │ │ ├── smil
│ │ │ │ │ └── SmilHelper.java
│ │ │ │ │ └── util_alt
│ │ │ │ │ ├── AbstractCache.java
│ │ │ │ │ ├── DownloadDrmHelper.java
│ │ │ │ │ ├── DrmConvertSession.java
│ │ │ │ │ ├── PduCache.java
│ │ │ │ │ ├── PduCacheEntry.java
│ │ │ │ │ └── SqliteWrapper.java
│ │ │ └── klinker
│ │ │ │ └── android
│ │ │ │ └── send_message
│ │ │ │ ├── ApnUtils.java
│ │ │ │ ├── BroadcastUtils.java
│ │ │ │ ├── DeliveredReceiver.java
│ │ │ │ ├── Message.java
│ │ │ │ ├── MmsFileProvider.java
│ │ │ │ ├── MmsReceivedReceiver.java
│ │ │ │ ├── MmsReceivedService.java
│ │ │ │ ├── MmsSentReceiver.java
│ │ │ │ ├── SentReceiver.java
│ │ │ │ ├── Settings.java
│ │ │ │ ├── SmsManagerFactory.java
│ │ │ │ ├── StatusUpdatedReceiver.java
│ │ │ │ ├── StripAccents.java
│ │ │ │ ├── Transaction.java
│ │ │ │ └── Utils.java
│ │ └── org
│ │ │ └── w3c
│ │ │ └── dom
│ │ │ ├── events
│ │ │ ├── DocumentEvent.java
│ │ │ ├── Event.java
│ │ │ ├── EventException.java
│ │ │ ├── EventListener.java
│ │ │ └── EventTarget.java
│ │ │ ├── smil
│ │ │ ├── ElementExclusiveTimeContainer.java
│ │ │ ├── ElementLayout.java
│ │ │ ├── ElementParallelTimeContainer.java
│ │ │ ├── ElementSequentialTimeContainer.java
│ │ │ ├── ElementSyncBehavior.java
│ │ │ ├── ElementTargetAttributes.java
│ │ │ ├── ElementTest.java
│ │ │ ├── ElementTime.java
│ │ │ ├── ElementTimeContainer.java
│ │ │ ├── ElementTimeControl.java
│ │ │ ├── ElementTimeManipulation.java
│ │ │ ├── SMILAnimateColorElement.java
│ │ │ ├── SMILAnimateElement.java
│ │ │ ├── SMILAnimateMotionElement.java
│ │ │ ├── SMILAnimation.java
│ │ │ ├── SMILDocument.java
│ │ │ ├── SMILElement.java
│ │ │ ├── SMILLayoutElement.java
│ │ │ ├── SMILMediaElement.java
│ │ │ ├── SMILParElement.java
│ │ │ ├── SMILRefElement.java
│ │ │ ├── SMILRegionElement.java
│ │ │ ├── SMILRegionInterface.java
│ │ │ ├── SMILRegionMediaElement.java
│ │ │ ├── SMILRootLayoutElement.java
│ │ │ ├── SMILSetElement.java
│ │ │ ├── SMILSwitchElement.java
│ │ │ ├── SMILTopLayoutElement.java
│ │ │ ├── Time.java
│ │ │ ├── TimeEvent.java
│ │ │ └── TimeList.java
│ │ │ └── views
│ │ │ ├── AbstractView.java
│ │ │ └── DocumentView.java
│ │ └── res
│ │ ├── drawable-hdpi
│ │ └── ic_alert.png
│ │ ├── drawable-mdpi
│ │ └── ic_alert.png
│ │ ├── drawable-xhdpi
│ │ └── ic_alert.png
│ │ ├── values
│ │ └── strings.xml
│ │ ├── xml-mcc204-mnc04
│ │ └── mms_config.xml
│ │ ├── xml-mcc208-mnc01
│ │ └── mms_config.xml
│ │ ├── xml-mcc208-mnc10
│ │ └── mms_config.xml
│ │ ├── xml-mcc208-mnc15
│ │ └── mms_config.xml
│ │ ├── xml-mcc208-mnc20
│ │ └── mms_config.xml
│ │ ├── xml-mcc208-mnc26
│ │ └── mms_config.xml
│ │ ├── xml-mcc214-mnc01
│ │ └── mms_config.xml
│ │ ├── xml-mcc214-mnc03
│ │ └── mms_config.xml
│ │ ├── xml-mcc214-mnc07
│ │ └── mms_config.xml
│ │ ├── xml-mcc218-mnc05
│ │ └── mms_config.xml
│ │ ├── xml-mcc222-mnc01
│ │ └── mms_config.xml
│ │ ├── xml-mcc222-mnc08
│ │ └── mms_config.xml
│ │ ├── xml-mcc234-mnc10
│ │ └── mms_config.xml
│ │ ├── xml-mcc234-mnc11
│ │ └── mms_config.xml
│ │ ├── xml-mcc234-mnc15
│ │ └── mms_config.xml
│ │ ├── xml-mcc238-mnc02
│ │ └── mms_config.xml
│ │ ├── xml-mcc240-mnc01
│ │ └── mms_config.xml
│ │ ├── xml-mcc240-mnc04
│ │ └── mms_config.xml
│ │ ├── xml-mcc240-mnc08
│ │ └── mms_config.xml
│ │ ├── xml-mcc240-mnc24
│ │ └── mms_config.xml
│ │ ├── xml-mcc242-mnc01
│ │ └── mms_config.xml
│ │ ├── xml-mcc242-mnc02
│ │ └── mms_config.xml
│ │ ├── xml-mcc262-mnc07
│ │ └── mms_config.xml
│ │ ├── xml-mcc274-mnc02
│ │ └── mms_config.xml
│ │ ├── xml-mcc274-mnc03
│ │ └── mms_config.xml
│ │ ├── xml-mcc286-mnc01
│ │ └── mms_config.xml
│ │ ├── xml-mcc286-mnc03
│ │ └── mms_config.xml
│ │ ├── xml-mcc294-mnc01
│ │ └── mms_config.xml
│ │ ├── xml-mcc294-mnc02
│ │ └── mms_config.xml
│ │ ├── xml-mcc294-mnc03
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc220
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc221
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc270
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc290
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc320
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc370
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc490
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc500
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc510
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc520
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc610
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc660
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc720
│ │ └── mms_config.xml
│ │ ├── xml-mcc302-mnc780
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc004
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc005
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc010
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc026
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc040
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc070
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc090
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc120
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc130
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc150
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc170
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc260
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc360
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc380
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc410
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc420
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc450
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc490
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc560
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc580
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc600
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc680
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc750
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc770
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc920
│ │ └── mms_config.xml
│ │ ├── xml-mcc310-mnc980
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc012
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc070
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc100
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc180
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc220
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc221
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc222
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc223
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc224
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc225
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc226
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc227
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc228
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc229
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc230
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc340
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc370
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc410
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc430
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc440
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc480
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc490
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc580
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc581
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc582
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc583
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc584
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc585
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc586
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc587
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc588
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc589
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc590
│ │ └── mms_config.xml
│ │ ├── xml-mcc311-mnc870
│ │ └── mms_config.xml
│ │ ├── xml-mcc312-mnc160
│ │ └── mms_config.xml
│ │ ├── xml-mcc312-mnc530
│ │ └── mms_config.xml
│ │ ├── xml-mcc334-mnc020
│ │ └── mms_config.xml
│ │ ├── xml-mcc418-mnc05
│ │ └── mms_config.xml
│ │ ├── xml-mcc418-mnc20
│ │ └── mms_config.xml
│ │ ├── xml-mcc418-mnc30
│ │ └── mms_config.xml
│ │ ├── xml-mcc420-mnc04
│ │ └── mms_config.xml
│ │ ├── xml-mcc440-mnc10
│ │ └── mms_config.xml
│ │ ├── xml-mcc440-mnc20
│ │ └── mms_config.xml
│ │ ├── xml-mcc450-mnc00
│ │ └── mms_config.xml
│ │ ├── xml-mcc450-mnc02
│ │ └── mms_config.xml
│ │ ├── xml-mcc450-mnc05
│ │ └── mms_config.xml
│ │ ├── xml-mcc450-mnc06
│ │ └── mms_config.xml
│ │ ├── xml-mcc450-mnc08
│ │ └── mms_config.xml
│ │ ├── xml-mcc505-mnc01
│ │ └── mms_config.xml
│ │ ├── xml-mcc530-mnc05
│ │ └── mms_config.xml
│ │ ├── xml-mcc604-mnc00
│ │ └── mms_config.xml
│ │ ├── xml-mcc604-mnc02
│ │ └── mms_config.xml
│ │ ├── xml-mcc647-mnc10
│ │ └── mms_config.xml
│ │ └── xml
│ │ ├── apns.xml
│ │ └── mms_config.xml
│ └── settings.gradle
├── metadata
└── android
│ ├── en-US
│ ├── changelogs
│ │ ├── 137.txt
│ │ └── 138.txt
│ ├── full_description.txt
│ ├── images
│ │ ├── featureGraphic.jpg
│ │ ├── icon.png
│ │ └── phoneScreenshots
│ │ │ ├── 1.jpg
│ │ │ ├── 2.jpg
│ │ │ ├── 3.jpg
│ │ │ └── 4.jpg
│ ├── short_description.txt
│ └── title.txt
│ ├── fr-FR
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ └── ja-JP
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
├── secrets.default.properties
├── settings.gradle
└── signingshared
└── shared.keystore.disabled
/.gitattributes:
--------------------------------------------------------------------------------
1 | lib/** linguist-vendored
--------------------------------------------------------------------------------
/README/hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/README/hero.png
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | /build
3 | /release
4 | /foss/release
5 | /full/release
6 |
--------------------------------------------------------------------------------
/app/src/debug/res/drawable-v26/app_icon_background.xml:
--------------------------------------------------------------------------------
1 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/foss/java/me/tagavari/airmessage/connection/comm5/ProxyConnect.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.connection.comm5
2 |
3 | import android.content.Context
4 | import me.tagavari.airmessage.connection.DataProxy
5 | import me.tagavari.airmessage.util.ConnectionParams
6 |
7 | class ProxyConnect: DataProxy() {
8 | override fun start(context: Context, override: ConnectionParams?) = Unit
9 |
10 | override fun stop(code: Int) = Unit
11 |
12 | override fun send(packet: EncryptedPacket) = false
13 |
14 | override fun isUsingFallback() = false
15 |
16 | fun sendTokenAdd(token: String) = Unit
17 | }
--------------------------------------------------------------------------------
/app/src/foss/java/me/tagavari/airmessage/flavor/CrashlyticsBridge.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.flavor
2 |
3 | import android.content.Context
4 |
5 | object CrashlyticsBridge {
6 | @JvmStatic
7 | fun configure(context: Context) = Unit
8 |
9 | @JvmStatic
10 | fun recordException(throwable: Throwable) = Unit
11 |
12 | @JvmStatic
13 | fun log(message: String) = Unit
14 | }
--------------------------------------------------------------------------------
/app/src/foss/java/me/tagavari/airmessage/flavor/FirebaseAuthBridge.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.flavor
2 |
3 | object FirebaseAuthBridge {
4 | @JvmStatic
5 | val isSupported = false
6 |
7 | @JvmStatic
8 | fun getUserSummary(): String? = null
9 | }
--------------------------------------------------------------------------------
/app/src/foss/java/me/tagavari/airmessage/flavor/FragmentMessagingAttachmentsMaps.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.flavor
2 |
3 | import android.view.View
4 | import me.tagavari.airmessage.fragment.FragmentMessagingAttachments
5 |
6 | class FragmentMessagingAttachmentsMaps(val fragment: FragmentMessagingAttachments) {
7 | fun initViews(view: View) = Unit
8 | }
--------------------------------------------------------------------------------
/app/src/foss/java/me/tagavari/airmessage/flavor/FragmentMessagingAttachmentsViewModelMaps.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.flavor
2 |
3 | import me.tagavari.airmessage.fragment.FragmentMessagingAttachments
4 |
5 | class FragmentMessagingAttachmentsViewModelMaps(private val viewModel: FragmentMessagingAttachments.FragmentViewModel) {
6 | fun loadLocation() = Unit
7 | }
--------------------------------------------------------------------------------
/app/src/foss/java/me/tagavari/airmessage/flavor/MLKitBridge.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.flavor
2 |
3 | import io.reactivex.rxjava3.annotations.CheckReturnValue
4 | import io.reactivex.rxjava3.core.Single
5 | import me.tagavari.airmessage.messaging.MessageInfo
6 |
7 | object MLKitBridge {
8 | val isSupported = false
9 |
10 | @CheckReturnValue
11 | @JvmStatic
12 | fun generate(messages: List): Single> = Single.just(listOf())
13 |
14 | @CheckReturnValue
15 | @JvmStatic
16 | fun generateFromDatabase(conversationID: Long): Single> = Single.just(listOf())
17 | }
--------------------------------------------------------------------------------
/app/src/foss/java/me/tagavari/airmessage/flavor/MapsBridge.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.flavor
2 |
3 | import android.content.Context
4 |
5 | object MapsBridge {
6 | @JvmStatic
7 | fun initialize(context: Context) = Unit
8 | }
--------------------------------------------------------------------------------
/app/src/foss/java/me/tagavari/airmessage/flavor/PlaySecurityBridge.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.flavor
2 |
3 | import android.app.Activity
4 | import android.content.Context
5 | import java.util.function.Consumer
6 |
7 | object PlaySecurityBridge {
8 | val isSupported = false
9 |
10 | @JvmStatic
11 | fun showDialog(activity: Activity, errorCode: Int, resultCode: Int) = Unit
12 |
13 | @JvmStatic
14 | fun update(context: Context, onError: Consumer) = Unit
15 | }
--------------------------------------------------------------------------------
/app/src/foss/java/me/tagavari/airmessage/flavor/VHMessageComponentLocationMap.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.flavor
2 |
3 | import android.content.Context
4 | import android.view.View
5 | import io.reactivex.rxjava3.core.Completable
6 | import me.tagavari.airmessage.messaging.viewholder.VHMessageComponentLocation
7 | import me.tagavari.airmessage.util.LatLngInfo
8 |
9 | class VHMessageComponentLocationMap(private val component: VHMessageComponentLocation) {
10 | val mapLoadCompletable: Completable = Completable.complete()
11 | fun setMapLocation(context: Context, location: LatLngInfo?) {
12 | //Just hide the map view
13 | component.mapContainer.visibility = View.GONE
14 | }
15 | }
--------------------------------------------------------------------------------
/app/src/foss/java/me/tagavari/airmessage/flavor/WelcomeGoogleSignIn.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.flavor
2 |
3 | import me.tagavari.airmessage.fragment.FragmentOnboardingWelcome
4 |
5 | class WelcomeGoogleSignIn constructor(private val fragment: FragmentOnboardingWelcome) {
6 | val isSupported = false
7 | fun launch() = Unit
8 | }
--------------------------------------------------------------------------------
/app/src/foss/res/layout/fragment_attachments_location.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/foss/res/layout/listitem_contentlocation_map.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/foss/res/values-fr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Entrez les détails de votre serveur pour recevoir vos messages sur cet appareil.
4 |
--------------------------------------------------------------------------------
/app/src/foss/res/values-ja/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | サーバーの詳細を入力して、このデバイスでメッセージを受け取る。
4 |
--------------------------------------------------------------------------------
/app/src/foss/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Enter your server details to get your messages on this device.
4 |
--------------------------------------------------------------------------------
/app/src/full/java/me/tagavari/airmessage/enums/LocationState.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums
2 |
3 | import androidx.annotation.IntDef
4 |
5 | @Retention(AnnotationRetention.SOURCE)
6 | @IntDef(LocationState.loading, LocationState.permission, LocationState.failed, LocationState.unavailable, LocationState.resolvable, LocationState.ready)
7 | annotation class LocationState {
8 | companion object {
9 | const val loading = 0 //Loading in progress
10 | const val permission = 1 //Permission required
11 | const val failed = 2 //Load error
12 | const val unavailable = 3 //Service unavailable
13 | const val resolvable = 4 //User action required
14 | const val ready = 5 //OK
15 | }
16 | }
--------------------------------------------------------------------------------
/app/src/full/java/me/tagavari/airmessage/flavor/FirebaseAuthBridge.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.flavor
2 |
3 | import com.google.firebase.auth.FirebaseAuth
4 |
5 | object FirebaseAuthBridge {
6 | @JvmStatic
7 | val isSupported = true
8 |
9 | @JvmStatic
10 | fun getUserSummary(): String? = FirebaseAuth.getInstance().currentUser?.run { "$displayName ($email)" }
11 | }
--------------------------------------------------------------------------------
/app/src/full/java/me/tagavari/airmessage/flavor/MapsBridge.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.flavor
2 |
3 | import android.content.Context
4 | import com.google.android.gms.maps.MapsInitializer
5 |
6 | object MapsBridge {
7 | @JvmStatic
8 | fun initialize(context: Context) {
9 | //Initializing Google Maps
10 | MapsInitializer.initialize(context, MapsInitializer.Renderer.LATEST, null)
11 | }
12 | }
--------------------------------------------------------------------------------
/app/src/full/res/layout/listitem_contentlocation_map.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/activity/ImageDraw.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.activity;
2 |
3 | import android.os.Bundle;
4 | import androidx.appcompat.app.AppCompatActivity;
5 | import me.tagavari.airmessage.R;
6 |
7 | public class ImageDraw extends AppCompatActivity {
8 |
9 | @Override
10 | protected void onCreate(Bundle savedInstanceState) {
11 | //Calling the super method
12 | super.onCreate(savedInstanceState);
13 |
14 | //Setting the content view
15 | setContentView(R.layout.activity_imagedraw);
16 |
17 | //((ImageView) findViewById(R.id.imagedraw_mainimage)).setImageURI();
18 | }
19 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/composite/ActivityPlugin.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.composite;
2 |
3 | import android.app.Activity;
4 | import android.os.Bundle;
5 | import androidx.annotation.Nullable;
6 |
7 | public abstract class ActivityPlugin {
8 | private Activity activity;
9 |
10 | protected void onCreate(@Nullable Bundle savedInstanceState) {}
11 | protected void onStart() {}
12 | protected void onResume() {}
13 | protected void onPause() {}
14 | protected void onStop() {}
15 | protected void onDestroy() {}
16 |
17 | void setActivity(Activity activity) {
18 | this.activity = activity;
19 | }
20 |
21 | protected Activity getActivity() {
22 | return activity;
23 | }
24 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/composite/AppCompatActivityPlugin.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.composite;
2 |
3 | import android.os.Bundle;
4 | import androidx.annotation.Nullable;
5 | import androidx.appcompat.app.AppCompatActivity;
6 |
7 | public abstract class AppCompatActivityPlugin {
8 | private AppCompatActivity activity;
9 |
10 | protected void onCreate(@Nullable Bundle savedInstanceState) {}
11 | protected void onStart() {}
12 | protected void onResume() {}
13 | protected void onPause() {}
14 | protected void onStop() {}
15 | protected void onDestroy() {}
16 |
17 | void setActivity(AppCompatActivity activity) {
18 | this.activity = activity;
19 | }
20 |
21 | protected AppCompatActivity getActivity() {
22 | return activity;
23 | }
24 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/connection/CommunicationsManagerFactory.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.connection;
2 |
3 | import me.tagavari.airmessage.connection.listener.CommunicationsManagerListener;
4 | import me.tagavari.airmessage.enums.ProxyType;
5 |
6 | public interface CommunicationsManagerFactory {
7 | CommunicationsManager> create(CommunicationsManagerListener listener, @ProxyType int proxyType);
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/connection/ConnectionOverride.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.connection;
2 |
3 | import androidx.annotation.Nullable;
4 | import me.tagavari.airmessage.enums.ProxyType;
5 | import me.tagavari.airmessage.util.ConnectionParams;
6 |
7 | public class ConnectionOverride {
8 | @ProxyType private final int proxyType;
9 | @Nullable private final T value;
10 |
11 | public ConnectionOverride(@ProxyType int proxyType, @Nullable T value) {
12 | this.proxyType = proxyType;
13 | this.value = value;
14 | }
15 |
16 | @ProxyType
17 | public int getProxyType() {
18 | return proxyType;
19 | }
20 |
21 | @Nullable
22 | public T getValue() {
23 | return value;
24 | }
25 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/connection/DataProxyListener.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.connection;
2 |
3 | import me.tagavari.airmessage.enums.ConnectionErrorCode;
4 |
5 | /**
6 | * Listener for events of a {@link DataProxy}
7 | */
8 | public interface DataProxyListener {
9 | void handleOpen();
10 | void handleClose(@ConnectionErrorCode int reason);
11 | void handleMessage(Packet packet);
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/connection/comm5/EncryptedPacket.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.connection.comm5;
2 |
3 | /**
4 | * A packet sent or received from a {@link me.tagavari.airmessage.connection.DataProxy}
5 | * Has an extra 'encrypt' flag that determines if this packet is encrypted during transit
6 | */
7 | public class EncryptedPacket {
8 | private byte[] data;
9 | private boolean encrypt;
10 |
11 | public EncryptedPacket(byte[] data, boolean encrypt) {
12 | this.data = data;
13 | this.encrypt = encrypt;
14 | }
15 |
16 | public byte[] getData() {
17 | return data;
18 | }
19 |
20 | public boolean getEncrypt() {
21 | return encrypt;
22 | }
23 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/connection/exception/AMRemoteUpdateException.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.connection.exception
2 |
3 | import java.lang.Exception
4 |
5 | class AMRemoteUpdateException @JvmOverloads constructor(
6 | val errorCode: Int,
7 | val errorDetails: String? = null
8 | ): Exception() {
9 | companion object {
10 | const val errorCodeUnknown = 0
11 | const val errorCodeMismatch = 1
12 | const val errorCodeDownload = 2
13 | const val errorCodeBadPackage = 3
14 | const val errorCodeInternal = 4
15 | }
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/connection/exception/LargeAllocationException.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.connection.exception;
2 |
3 | //When the system tries to allocate more memory than a hardcoded limit
4 | public class LargeAllocationException extends RuntimeException {
5 | public LargeAllocationException(long size, long limit) {
6 | super("Tried to allocate " + size + ", but limit is " + limit);
7 | }
8 |
9 | public LargeAllocationException(long size, long limit, Throwable cause) {
10 | super("Tried to allocate " + size + ", but limit is " + limit, cause);
11 | }
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/connection/listener/ConnectionUpdateListener.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.connection.listener;
2 |
3 | import me.tagavari.airmessage.enums.ConnectionErrorCode;
4 |
5 | public interface ConnectionUpdateListener {
6 | void onConnecting();
7 | void onOpen();
8 | void onClose(@ConnectionErrorCode int code);
9 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/connection/request/FileProcessingRequest.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.connection.request;
2 |
3 | /**
4 | * Represents a file to be processed in the background by the app
5 | */
6 | public abstract class FileProcessingRequest {
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/connection/request/FileRemovalRequest.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.connection.request;
2 |
3 | import me.tagavari.airmessage.messaging.FileDraft;
4 |
5 | /**
6 | * Represents a request to delete a draft file
7 | */
8 | public class FileRemovalRequest extends FileProcessingRequest {
9 | private final FileDraft draftFile;
10 | private final long updateTime;
11 |
12 | public FileRemovalRequest(FileDraft draftFile, long updateTime) {
13 | this.draftFile = draftFile;
14 | this.updateTime = updateTime;
15 | }
16 |
17 | public FileDraft getDraftFile() {
18 | return draftFile;
19 | }
20 |
21 | public long getUpdateTime() {
22 | return updateTime;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/constants/ColorConstants.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.constants;
2 |
3 | import java.util.Arrays;
4 | import java.util.Collections;
5 | import java.util.List;
6 |
7 | public class ColorConstants {
8 | public static final float disabledAlpha = 0.54F;
9 | public static final int rippleAlphaInt = 51; //20%
10 | public static final int secondaryAlphaInt = 179; //70%
11 | public static final List effectColors = Arrays.asList(
12 | 0xFCE18A, //Yellow
13 | 0xFF726D, //Orange
14 | 0xB48DEF, //Purple
15 | 0xF4306D, //Pink
16 | 0x42A5F5, //Blue
17 | 0x7986CB //Indigo
18 | );
19 | public static final int colorAMOLED = 0xFF000000;
20 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/constants/FileNameConstants.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.constants;
2 |
3 | public class FileNameConstants {
4 | public static final String recordingName = "Audio message.amr";
5 | public static final String pictureName = "image.jpg";
6 | public static final String videoName = "video.mp4";
7 | public static final String locationName = "location.loc.vcf";
8 | public static final String defaultFileName = "file";
9 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/constants/MIMEConstants.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.constants;
2 |
3 | public class MIMEConstants {
4 | public static final String defaultMIMEType = "application/octet-stream";
5 |
6 | public static final String mimeTypeImage = "image/*";
7 | public static final String mimeTypeVideo = "video/*";
8 | public static final String mimeTypeAudio = "audio/*";
9 | public static final String mimeTypeGIF = "image/gif";
10 | public static final String mimeTypeVLocation = "text/x-vlocation";
11 | public static final String mimeTypeVCard = "text/vcard";
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/constants/NetworkConstants.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.constants;
2 |
3 | public class NetworkConstants {
4 | public static final int defaultPort = 1359;
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/constants/SMSReceiverConstants.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.constants;
2 |
3 | public class SMSReceiverConstants {
4 | public static final String conversationID = "conversationID";
5 | public static final String messageID = "messageID";
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/constants/TimingConstants.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.constants;
2 |
3 | public class TimingConstants {
4 | //Message burst - Sending single messages one after the other
5 | public static final long conversationBurstTimeMillis = 30 * 1000; //30 seconds
6 |
7 | //Message session - A conversation session, where conversation participants are active
8 | public static final long conversationSessionTimeMillis = 5 * 60 * 1000; //5 minutes
9 |
10 | //Just now - A message sent just now
11 | public static final long conversationJustNowTimeMillis = 60 * 1000; //1 minute
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/constants/VersionConstants.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.constants
2 |
3 | object VersionConstants {
4 | /**
5 | * The latest communications version that this client supports
6 | */
7 | @JvmStatic
8 | val latestCommVer = listOf(5, 5)
9 |
10 | /**
11 | * * The latest communications version that this client supports as a human-readable string
12 | */
13 | @JvmStatic
14 | val latestCommVerString get() = latestCommVer.joinToString(".")
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/data/SharedPreferencesManager.java:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/java/me/tagavari/airmessage/data/SharedPreferencesManager.java
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/AttachmentType.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({AttachmentType.media, AttachmentType.document, AttachmentType.audio, AttachmentType.contact, AttachmentType.location})
10 | public @interface AttachmentType {
11 | int document = 0;
12 | int media = 1;
13 | int audio = 2;
14 | int contact = 3;
15 | int location = 4;
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/ChatCreateErrorCode.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({ChatCreateErrorCode.network, ChatCreateErrorCode.scriptError, ChatCreateErrorCode.badRequest, ChatCreateErrorCode.unauthorized, ChatCreateErrorCode.unknown, ChatCreateErrorCode.notSupported})
10 | public @interface ChatCreateErrorCode {
11 | int network = 0;
12 | int scriptError = 1;
13 | int badRequest = 2;
14 | int unauthorized = 3;
15 | int unknown = 4;
16 | int notSupported = 5;
17 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/ConnectionFeature.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({ConnectionFeature.idBasedRetrieval, ConnectionFeature.payloadPushNotifications, ConnectionFeature.remoteUpdates, ConnectionFeature.faceTime})
10 | public @interface ConnectionFeature {
11 | int idBasedRetrieval = 0; //Retrieve messages using an ID range
12 | int payloadPushNotifications = 1; //Receive FCM messages with message content
13 | int remoteUpdates = 2; //Initiate server updates from clients
14 | int faceTime = 3; //Initiate and receive FaceTime calls
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/ConnectionMode.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({ConnectionMode.user, ConnectionMode.immediate, ConnectionMode.background})
10 | public @interface ConnectionMode {
11 | int user = 0;
12 | int immediate = 1;
13 | int background = 2;
14 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/ConnectionState.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({ConnectionState.disconnected, ConnectionState.connecting, ConnectionState.connected})
10 | public @interface ConnectionState {
11 | int disconnected = 0;
12 | int connecting = 1;
13 | int connected = 2;
14 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/ConversationItemType.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({ConversationItemType.message, ConversationItemType.member, ConversationItemType.chatRename, ConversationItemType.chatCreate})
10 | public @interface ConversationItemType {
11 | int message = 0;
12 | int member = 1;
13 | int chatRename = 2;
14 | int chatCreate = 3;
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/ConversationState.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({ConversationState.ready, ConversationState.incompleteServer, ConversationState.incompleteClient})
10 | public @interface ConversationState {
11 | int ready = 0; //The conversation is in sync with the server
12 | int incompleteServer = 1; //The conversation is a result of a message from the server, but is missing info
13 | int incompleteClient = 2; //The conversation was created on the client, but isn't linked to the server
14 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/FaceTimeInitiateCode.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({FaceTimeInitiateCode.ok, FaceTimeInitiateCode.network, FaceTimeInitiateCode.badMembers, FaceTimeInitiateCode.external})
10 | public @interface FaceTimeInitiateCode {
11 | int ok = 0;
12 | int network = 1;
13 | int badMembers = 2;
14 | int external = 3;
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/FaceTimeLinkErrorCode.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({FaceTimeLinkErrorCode.network, FaceTimeLinkErrorCode.external})
10 | public @interface FaceTimeLinkErrorCode {
11 | int network = 0;
12 | int external = 1;
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/GroupAction.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({GroupAction.unknown, GroupAction.join, GroupAction.leave})
10 | public @interface GroupAction {
11 | int unknown = 0;
12 | int join = 1;
13 | int leave = 2;
14 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/MassRetrievalErrorCode.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({MassRetrievalErrorCode.unknown, MassRetrievalErrorCode.localTimeout, MassRetrievalErrorCode.localBadResponse, MassRetrievalErrorCode.localIO})
10 | public @interface MassRetrievalErrorCode {
11 | int unknown = -1;
12 | int localTimeout = 0; //Request timed out
13 | int localBadResponse = 1; //Bad response (packets out of order)
14 | int localIO = 2; //IO error
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/MessageComponentType.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({MessageComponentType.text, MessageComponentType.attachmentDocument, MessageComponentType.attachmentVisual, MessageComponentType.attachmentAudio, MessageComponentType.attachmentContact, MessageComponentType.attachmentLocation})
10 | public @interface MessageComponentType {
11 | int text = 0;
12 | int attachmentDocument = 1;
13 | int attachmentVisual = 2;
14 | int attachmentAudio = 3;
15 | int attachmentContact = 4;
16 | int attachmentLocation = 5;
17 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/MessageEdgeType.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({MessageEdgeType.anchored, MessageEdgeType.unanchored, MessageEdgeType.flat})
10 | public @interface MessageEdgeType {
11 | int anchored = 0;
12 | int unanchored = 1;
13 | int flat = 2;
14 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/MessagePreviewState.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({MessagePreviewState.notTried, MessagePreviewState.unavailable, MessagePreviewState.available})
10 | public @interface MessagePreviewState {
11 | int notTried = 0;
12 | int unavailable = 1;
13 | int available = 2;
14 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/MessagePreviewType.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({MessagePreviewType.link})
10 | public @interface MessagePreviewType {
11 | int link = 0;
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/MessageState.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({MessageState.ghost, MessageState.idle, MessageState.sent, MessageState.delivered, MessageState.read})
10 | public @interface MessageState {
11 | int ghost = 0;
12 | int idle = 1;
13 | int sent = 2;
14 | int delivered = 3;
15 | int read = 4;
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/MessageViewType.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({MessageViewType.message, MessageViewType.action})
10 | public @interface MessageViewType {
11 | int message = 0;
12 | int action = 1;
13 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/ProxyType.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({ProxyType.direct, ProxyType.connect})
10 | public @interface ProxyType {
11 | int direct = 0;
12 | int connect = 1;
13 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/ServiceHandler.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({ServiceHandler.appleBridge, ServiceHandler.systemMessaging})
10 | public @interface ServiceHandler {
11 | int appleBridge = 0; //AirMessage bridge (iMessage, text message forwarding)
12 | int systemMessaging = 1; //System messaging (SMS, MMS, RCS)
13 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/ServiceType.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.StringDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @StringDef({ServiceType.appleMessage, ServiceType.appleSMS, ServiceType.systemSMS, ServiceType.systemRCS})
10 | public @interface ServiceType {
11 | String appleMessage = "iMessage";
12 | String appleSMS = "SMS"; //Text message forwarding
13 |
14 | String systemSMS = "MMSSMS"; //MMS and SMS
15 | String systemRCS = "RCS"; //Rich communication services
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/TapbackType.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({TapbackType.unknown, TapbackType.heart, TapbackType.like, TapbackType.dislike, TapbackType.laugh, TapbackType.exclamation, TapbackType.question})
10 | public @interface TapbackType {
11 | int unknown = -1;
12 | int heart = 0;
13 | int like = 1;
14 | int dislike = 2;
15 | int laugh = 3;
16 | int exclamation = 4;
17 | int question = 5;
18 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/enums/TrackableRequestCategory.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.enums;
2 |
3 | import androidx.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | @Retention(RetentionPolicy.SOURCE)
9 | @IntDef({TrackableRequestCategory.messageUpload, TrackableRequestCategory.attachmentUpload})
10 | public @interface TrackableRequestCategory {
11 | int messageUpload = 0;
12 | int attachmentUpload = 1;
13 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/extension/FragmentBackOverride.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.extension;
2 |
3 | public interface FragmentBackOverride {
4 | /**
5 | * Handle back button presses
6 | * @return TRUE if the event is consumed by this listener
7 | */
8 | boolean onBackPressed();
9 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/extension/FragmentCommunicationFaceTime.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.extension
2 |
3 | interface FragmentCommunicationFaceTime {
4 | fun exitCall()
5 | fun acceptCall()
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/extension/FragmentCommunicationNetworkConfig.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.extension;
2 |
3 | import androidx.annotation.Nullable;
4 | import me.tagavari.airmessage.connection.ConnectionManager;
5 | import me.tagavari.airmessage.fragment.FragmentCommunication;
6 |
7 | public interface FragmentCommunicationNetworkConfig {
8 | void swapFragment(FragmentCommunication fragment);
9 | void popStack();
10 | void launchConversations();
11 | @Nullable
12 | ConnectionManager getConnectionManager();
13 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/fragment/FragmentCommunication.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.fragment
2 |
3 | import androidx.annotation.LayoutRes
4 | import androidx.fragment.app.Fragment
5 |
6 | open class FragmentCommunication : Fragment {
7 | var communicationsCallback: A? = null
8 |
9 | constructor() : super()
10 | constructor(@LayoutRes contentLayoutId: Int) : super(contentLayoutId)
11 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/messaging/AttachmentPreview.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.messaging
2 |
3 | import android.os.Parcelable
4 | import kotlinx.parcelize.Parcelize
5 | import java.io.Serializable
6 |
7 | /**
8 | * A preview for an attachment file
9 | * @param name The name of this attachment file
10 | * @param type The MIME type of this attachment file
11 | */
12 | @Parcelize
13 | data class AttachmentPreview(val name: String?, val type: String?) : Serializable, Parcelable
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/messaging/ConversationItem.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.messaging
2 |
3 | import me.tagavari.airmessage.enums.ConversationItemType
4 | import me.tagavari.airmessage.enums.MessageViewType
5 |
6 | abstract class ConversationItem(open var localID: Long, var serverID: Long, var guid: String?, var date: Long) {
7 | @get:ConversationItemType
8 | abstract val itemType: Int
9 |
10 | @get:MessageViewType
11 | abstract val itemViewType: Int
12 | abstract fun clone(): ConversationItem
13 |
14 | companion object {
15 | const val viewTypeMessage = 0
16 | const val viewTypeAction = 1
17 | }
18 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/messaging/MemberInfo.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.messaging
2 |
3 | import android.os.Parcelable
4 | import kotlinx.parcelize.Parcelize
5 |
6 | @Parcelize
7 | data class MemberInfo(val address: String, var color: Int) : Parcelable {
8 | fun clone(): MemberInfo = MemberInfo(address, color)
9 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/messaging/MessagePreviewInfo.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.messaging
2 |
3 | import me.tagavari.airmessage.enums.MessagePreviewType
4 |
5 | /**
6 | * Represents a preview card for a message component
7 | */
8 | class MessagePreviewInfo(
9 | @field:MessagePreviewType @get:MessagePreviewType
10 | @param:MessagePreviewType val type: Int,
11 | val localID: Long,
12 | val data: ByteArray?,
13 | val target: String,
14 | val title: String,
15 | val subtitle: String,
16 | val caption: String
17 | )
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/messaging/viewholder/VHConversationBase.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.messaging.viewholder
2 |
3 | import android.view.View
4 | import android.view.ViewGroup
5 | import android.widget.TextView
6 | import me.tagavari.airmessage.util.DisposableViewHolder
7 |
8 | /**
9 | * A view holder that contains a conversation title and an icon
10 | */
11 | open class VHConversationBase(
12 | itemView: View,
13 | val iconGroup: ViewGroup,
14 | val conversationTitle: TextView
15 | ) : DisposableViewHolder(itemView)
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/messaging/viewholder/VHMessageAction.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.messaging.viewholder
2 |
3 | import android.view.View
4 | import android.widget.TextView
5 | import me.tagavari.airmessage.util.DisposableViewHolder
6 |
7 | /**
8 | * A view holder that contains a label for an action message
9 | */
10 | class VHMessageAction(itemView: View, val label: TextView) : DisposableViewHolder(itemView)
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/messaging/viewholder/VHMessagePreview.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.messaging.viewholder
2 |
3 | import android.content.Context
4 | import android.view.View
5 | import androidx.recyclerview.widget.RecyclerView
6 |
7 | abstract class VHMessagePreview(itemView: View) : RecyclerView.ViewHolder(itemView) {
8 | /**
9 | * Updates the rounded corners of this component
10 | * @param context The context to use
11 | * @param anchoredBottom Whether this view is anchored to a message below
12 | * @param alignToRight Whether this view is aligned to the right edge of the screen
13 | */
14 | abstract fun updateViewEdges(context: Context, anchoredBottom: Boolean, alignToRight: Boolean)
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/receiver/StartBootReceiver.java:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.receiver;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import me.tagavari.airmessage.helper.ConnectionServiceLaunchHelper;
7 |
8 | public class StartBootReceiver extends BroadcastReceiver {
9 | @Override
10 | public void onReceive(Context context, Intent intent) {
11 | //Returning if the service is not a boot service
12 | if(!Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) return;
13 |
14 | //Starting the service
15 | ConnectionServiceLaunchHelper.launchPersistent(context);
16 | }
17 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/redux/ReduxEventAttachmentDownload.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.redux
2 |
3 | import java.io.File
4 |
5 | //An event to represent the status of an attachment download
6 | abstract class ReduxEventAttachmentDownload {
7 | data class Start(val fileLength: Long) : ReduxEventAttachmentDownload()
8 | data class Progress(val bytesProgress: Long, val bytesTotal: Long) : ReduxEventAttachmentDownload()
9 | data class Complete(val file: File) : ReduxEventAttachmentDownload()
10 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/redux/ReduxEventAttachmentUpload.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.redux
2 |
3 | //An event to represent the status of an attachment upload
4 | abstract class ReduxEventAttachmentUpload {
5 | //While this file is being uploaded
6 | data class Progress(val bytesProgress: Long, val bytesTotal: Long) : ReduxEventAttachmentUpload()
7 |
8 | //When this file has finished being uploaded
9 | data class Complete(val fileHash: ByteArray) : ReduxEventAttachmentUpload()
10 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/redux/ReduxEventFaceTime.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.redux
2 |
3 | sealed interface ReduxEventFaceTime {
4 | //Outgoing calls
5 | class OutgoingAccepted(val faceTimeLink: String) : ReduxEventFaceTime
6 | object OutgoingRejected : ReduxEventFaceTime
7 | class OutgoingError(val errorDetails: String?) : ReduxEventFaceTime
8 |
9 | //Incoming calls
10 | class IncomingHandled(val faceTimeLink: String) : ReduxEventFaceTime
11 | class IncomingHandleError(val errorDetails: String?) : ReduxEventFaceTime
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/redux/ReduxEventRemoteUpdate.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.redux
2 |
3 | import me.tagavari.airmessage.connection.exception.AMRemoteUpdateException
4 |
5 | sealed class ReduxEventRemoteUpdate {
6 | object Initiate : ReduxEventRemoteUpdate()
7 | class Error(val exception: AMRemoteUpdateException) : ReduxEventRemoteUpdate()
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/redux/ReduxEventTextImport.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.redux
2 |
3 | import me.tagavari.airmessage.messaging.ConversationInfo
4 |
5 | //An event to represent the status of a mass retrieval
6 | abstract class ReduxEventTextImport {
7 | class Start(val itemCount: Int) : ReduxEventTextImport()
8 | class Progress(val receivedItems: Int, val totalItems: Int) : ReduxEventTextImport()
9 | class Complete(val conversations: Collection) : ReduxEventTextImport()
10 | class Fail : ReduxEventTextImport()
11 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/ActivityStatusUpdate.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | import me.tagavari.airmessage.enums.MessageState
4 |
5 | /**
6 | * A class for passing around data related to an activity status update
7 | * @param messageID The ID of the message that is being updated
8 | * @param messageState The message's new state
9 | * @param dateRead The date the message was read
10 | */
11 | data class ActivityStatusUpdate @JvmOverloads constructor(
12 | val messageID: Long,
13 | @field:MessageState @get:MessageState @param:MessageState val messageState: Int,
14 | val dateRead: Long = -1
15 | )
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/ConnectionParams.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | /**
4 | * Represents a collection of data that can be used to configure the connection of a certain type of proxy
5 | */
6 | sealed class ConnectionParams {
7 | open class Security(val password: String) : ConnectionParams()
8 | open class Direct(val address: String, val fallbackAddress: String?, password: String) : Security(password)
9 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/ConversationTarget.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | /**
4 | * Represents a conversation that can be sent to
5 | */
6 | interface ConversationTarget {
7 | //A serverlinked Apple Messages chat
8 | data class AppleLinked(val guid: String) : ConversationTarget
9 |
10 | //An unlinked potential Apple Messages chat
11 | data class AppleUnlinked(val members: List, val service: String) : ConversationTarget
12 |
13 | //A local SMS chat
14 | data class SystemSMS(val externalID: Long) : ConversationTarget
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/CustomTabsURLSpan.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | import android.net.Uri
4 | import android.text.style.URLSpan
5 | import android.view.View
6 | import android.widget.TextView
7 | import me.tagavari.airmessage.helper.IntentHelper
8 |
9 | class CustomTabsURLSpan(url: String?) : URLSpan(url) {
10 | override fun onClick(widget: View) {
11 | //Ignoring if the widget has disabled link clicking
12 | if(!(widget as TextView).linksClickable) return
13 |
14 | //Launching the custom tab
15 | IntentHelper.launchCustomTabs(widget.getContext(), Uri.parse(url))
16 | }
17 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/DisposableViewHolder.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | import android.view.View
4 | import androidx.recyclerview.widget.RecyclerView
5 | import io.reactivex.rxjava3.disposables.CompositeDisposable
6 |
7 | /**
8 | * A view holder that keeps track of a [CompositeDisposable] for background processes
9 | */
10 | abstract class DisposableViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
11 | val compositeDisposable = CompositeDisposable()
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/IndexedItem.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | data class IndexedItem(val index: Int, val item: T)
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/LatLngInfo.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | import android.os.Parcelable
4 | import kotlinx.parcelize.Parcelize
5 |
6 | @Parcelize
7 | data class LatLngInfo(val latitude: Double, val longitude: Double) : Parcelable
8 |
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/ModifierMetadata.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | /**
4 | * A helper class to hold data about the positioning of a modifier
5 | * @param messageID The ID of the message the modifier is attached to
6 | * @param componentIndex The index of the component the modifier is attached to
7 | */
8 | data class ModifierMetadata(val messageID: Long, val componentIndex: Int)
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/NotificationSummaryMessage.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | import android.os.Parcelable
4 | import kotlinx.parcelize.Parcelize
5 |
6 | //Represents an item in a summary notification
7 | @Parcelize
8 | data class NotificationSummaryMessage(val conversationID: Int, val title: String, val description: String) : Parcelable
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/ServerUpdateData.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | import android.os.Parcelable
4 | import kotlinx.parcelize.Parcelize
5 |
6 | @Parcelize
7 | data class ServerUpdateData(
8 | val id: Int,
9 | val protocolRequirement: List,
10 | val version: String,
11 | val notes: String,
12 | val remoteInstallable: Boolean
13 | ): Parcelable
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/TapbackDisplayData.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | import androidx.annotation.ColorRes
4 | import androidx.annotation.DrawableRes
5 | import androidx.annotation.StringRes
6 |
7 | /**
8 | * A class that holds display data required to render a tapback
9 | * @param iconResource The tapback's icon
10 | * @param color The tapback's color
11 | * @param label The tapback's title
12 | */
13 | class TapbackDisplayData(
14 | @field:DrawableRes @get:DrawableRes @param:DrawableRes val iconResource: Int,
15 | @field:ColorRes @get:ColorRes @param:ColorRes val color: Int,
16 | @field:StringRes @get:StringRes @param:StringRes val label: Int
17 | )
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/TrackableRequest.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | import me.tagavari.airmessage.enums.TrackableRequestCategory
4 |
5 | /**
6 | * Helper interface for finding requests based on a category and key value
7 | * @param The type of the value
8 | */
9 | interface TrackableRequest {
10 | @get:TrackableRequestCategory val category: Int
11 | val value: T
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/tagavari/airmessage/util/TransferredConversation.kt:
--------------------------------------------------------------------------------
1 | package me.tagavari.airmessage.util
2 |
3 | import me.tagavari.airmessage.messaging.ConversationInfo
4 |
5 | /**
6 | * Holds information for the transfer of a conversation, exclusively used by AM bridge to resolve client- and server-created conversations on the fly
7 | * @param serverConversation The server conversation that is being transferred from
8 | * @param serverConversationItems Items from the server conversation
9 | * @param clientConversation The target conversation that is being transferred to
10 | */
11 | data class TransferredConversation(
12 | val serverConversation: ConversationInfo,
13 | val serverConversationItems: List,
14 | val clientConversation: ConversationInfo
15 | )
--------------------------------------------------------------------------------
/app/src/main/res/anim/activity_slide_up.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fade_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fade_in_delayed.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fade_in_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fade_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fade_out_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/freeze.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/messagedetails_slide_in_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/messagedetails_slide_out_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/messagestatus_slide_in_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/messagestatus_slide_out_top.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/windowslide_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/windowslide_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/windowslideback_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/windowslideback_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/onboarding_download_medium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-hdpi/onboarding_download_medium.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/onboarding_download_short.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-hdpi/onboarding_download_short.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/onboarding_download_tall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-hdpi/onboarding_download_tall.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/promo_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-hdpi/promo_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/onboarding_download_medium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-mdpi/onboarding_download_medium.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/onboarding_download_short.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-mdpi/onboarding_download_short.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/onboarding_download_tall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-mdpi/onboarding_download_tall.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/promo_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-mdpi/promo_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-hdpi/onboarding_download_medium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-hdpi/onboarding_download_medium.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-hdpi/onboarding_download_short.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-hdpi/onboarding_download_short.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-hdpi/onboarding_download_tall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-hdpi/onboarding_download_tall.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-mdpi/onboarding_download_medium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-mdpi/onboarding_download_medium.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-mdpi/onboarding_download_short.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-mdpi/onboarding_download_short.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-mdpi/onboarding_download_tall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-mdpi/onboarding_download_tall.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xhdpi/onboarding_download_medium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-xhdpi/onboarding_download_medium.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xhdpi/onboarding_download_short.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-xhdpi/onboarding_download_short.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xhdpi/onboarding_download_tall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-xhdpi/onboarding_download_tall.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxhdpi/onboarding_download_medium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-xxhdpi/onboarding_download_medium.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxhdpi/onboarding_download_short.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-xxhdpi/onboarding_download_short.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxhdpi/onboarding_download_tall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-xxhdpi/onboarding_download_tall.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxxhdpi/onboarding_download_medium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-xxxhdpi/onboarding_download_medium.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxxhdpi/onboarding_download_short.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-xxxhdpi/onboarding_download_short.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-night-xxxhdpi/onboarding_download_tall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-night-xxxhdpi/onboarding_download_tall.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v26/app_icon_background.xml:
--------------------------------------------------------------------------------
1 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v26/appshortcut_add.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/onboarding_download_medium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-xhdpi/onboarding_download_medium.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/onboarding_download_short.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-xhdpi/onboarding_download_short.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/onboarding_download_tall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-xhdpi/onboarding_download_tall.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/promo_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-xhdpi/promo_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/onboarding_download_medium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-xxhdpi/onboarding_download_medium.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/onboarding_download_short.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-xxhdpi/onboarding_download_short.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/onboarding_download_tall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-xxhdpi/onboarding_download_tall.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/promo_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-xxhdpi/promo_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/onboarding_download_medium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-xxxhdpi/onboarding_download_medium.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/onboarding_download_short.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-xxxhdpi/onboarding_download_short.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/onboarding_download_tall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-xxxhdpi/onboarding_download_tall.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/promo_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/drawable-xxxhdpi/promo_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/add.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/add_circle.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/add_rounded.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/appear_bottomscrim.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/appear_bottomshadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/appear_topscrim.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/appear_topshadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/appshortcut_add.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/appshortcut_add_foreground.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/archive.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/archive_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/archive_outlined_actionmode.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/arrow_back.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/attach.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/audiotile_progressbar_background.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/audiotile_progressbar_circular.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/background_amoledsamsung.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/background_filler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/background_roundedcrashreport.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/brush.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/button_mediaplayer_pause.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/button_mediaplayer_play.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/call.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/camera.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/camera_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/cancel.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/chat.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/chat_rounded.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/check.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/check_circle.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/check_circle_outline.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/chevron_down.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/chevron_down_rounded.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/chevron_left.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/chevron_right.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/chip_tapback.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/circle.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/circle_borderdivider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 | -
10 |
11 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/circle_clickabledark.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
8 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/close.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/close_circle.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/close_control.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/contacts.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/copy.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/create.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/create_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/delete.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/delete_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/delete_outlined_actionmode.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/dialog_bottomsheet.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/disconnection.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/dislike.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/divider_replysuggestions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/download.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/download_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/download_rounded.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/drawable_handle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/email.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/error.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ethernetcable.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/excited.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/exclamation.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/exclamation_rounded.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/facetime.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/facetime_outline.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/file.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/file_document.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/file_document_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/file_msexcel.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/file_mspowerpoint.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/file_msword.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/file_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/file_user.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/file_xml.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/file_zip.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/gallery.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/gallery_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/gif.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/help_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/info.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/info_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/keyboard.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/keyboard_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/keyboard_rounded.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/like.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/like_rounded.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/link.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/location.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/location_outline.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/location_round.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/lock_alert.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/lock_outlined.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/love.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/love_rounded.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/mapindicator.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/message.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/message_alert.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/message_bridge.xml:
--------------------------------------------------------------------------------
1 |
6 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/message_download.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/message_google.xml:
--------------------------------------------------------------------------------
1 |
6 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/message_plus.xml:
--------------------------------------------------------------------------------
1 |
6 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/message_push.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/message_push_group.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/message_sms.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/microphone.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/microphone_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/movie.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/movie_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/next.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/notifications_off_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/notifications_off_outlined_actionmode.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/notifications_on_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/notifications_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/open.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/open_rounded.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/overflow.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/pause.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/pause_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/pause_rounded.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/person_add_round.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/pin.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/play.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/play_circle.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/play_circle_rounded.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/play_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/play_rounded.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/progressbar_rounded.xml:
--------------------------------------------------------------------------------
1 |
2 | -
3 |
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/question.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rectangle_chatpreview.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rectangle_chatpreviewfull.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rectangle_messagebubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/refresh.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/replay.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/reply.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/restart.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ring.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_button_highlight.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_button_highlight_ripple.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_circle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_contentpane.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_contenttile.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_inputbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_rectangle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_rectangle_highlight.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_rectangle_highlight_ripple.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_rectangle_ripple.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_rectangle_top.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_selectable_contenttile.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_selectable_contenttile_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_selectable_contenttile_top.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_selectable_inputbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rounded_sheet.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/save.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/search.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selectable_rounded.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/send.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/stroke_color.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/sync.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/sync_problem.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/text_fields.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/unarchive.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/unarchive_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/unarchive_outlined_actionmode.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/undo.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/update.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/upload.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/upload_rounded.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/user_divider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/videocam_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/volume.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/volume_outlined.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/warning.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/wifi.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/wifi_off.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_facetimecall.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_onboarding.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_colorpicker.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_simplelist.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_callactive.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_stickercontainer.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_tapbackcontainer.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/listitem_action.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/listitem_attachment_overflow.xml:
--------------------------------------------------------------------------------
1 |
8 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/listitem_conversation_icon1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/listitem_loading.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/listitem_mediaviewer_image.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/listitem_mediaviewer_video.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/listitem_replysuggestions.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/listitem_subheader.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/listitem_tapbackinfo_header.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_blockedaddresses.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_conversationitem_contextual.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_help.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_mediaviewer.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_messaginginfo.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/app_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/mipmap-hdpi/app_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/app_icon_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/mipmap-hdpi/app_icon_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/mipmap-mdpi/app_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/app_icon_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/mipmap-mdpi/app_icon_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/mipmap-xhdpi/app_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/app_icon_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/mipmap-xhdpi/app_icon_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/mipmap-xxhdpi/app_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/app_icon_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/mipmap-xxhdpi/app_icon_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/mipmap-xxxhdpi/app_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/app_icon_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/mipmap-xxxhdpi/app_icon_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/raw/facetime_inject_css.css:
--------------------------------------------------------------------------------
1 | * {
2 | -webkit-user-select: none;
3 | }
4 |
5 | .action-controls li:first-child {
6 | display: none !important;
7 | }
--------------------------------------------------------------------------------
/app/src/main/res/raw/map_light.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/app/src/main/res/raw/message_error.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/raw/message_error.wav
--------------------------------------------------------------------------------
/app/src/main/res/raw/message_in.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/raw/message_in.wav
--------------------------------------------------------------------------------
/app/src/main/res/raw/message_out.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/raw/message_out.wav
--------------------------------------------------------------------------------
/app/src/main/res/raw/message_received.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/raw/message_received.wav
--------------------------------------------------------------------------------
/app/src/main/res/raw/message_sent.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/raw/message_sent.wav
--------------------------------------------------------------------------------
/app/src/main/res/raw/notification_ding.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/raw/notification_ding.wav
--------------------------------------------------------------------------------
/app/src/main/res/raw/recording_end.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/raw/recording_end.wav
--------------------------------------------------------------------------------
/app/src/main/res/raw/recording_start.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/app/src/main/res/raw/recording_start.wav
--------------------------------------------------------------------------------
/app/src/main/res/values-ldrtl/vars.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/vars.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/library_definitions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 2018;PonnamKarthik
4 | Karthik Ponnam
5 | RichLink-Preview
6 | apache_2_0
7 | true
8 | https://github.com/PonnamKarthik/RichLinkPreview
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values/tags.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | primarytint
4 | amoled_divider
5 | amoled_divider_bottom
6 | controlbar
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/vars.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 | true
5 |
--------------------------------------------------------------------------------
/app/src/main/res/xml-v26/preferences_notification.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/automotive_app_desc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/provider_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/lib/android-smsmms/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle/
2 | .idea/
3 | **/.project
4 | **/.classpath
5 | **/.settings/
6 | **/build/
7 | gen/
8 | *.iml
9 | **/.DS_STORE
10 | local.properties
--------------------------------------------------------------------------------
/lib/android-smsmms/android-messaging.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/lib/android-smsmms/android-messaging.png
--------------------------------------------------------------------------------
/lib/android-smsmms/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:3.5.3'
9 | }
10 | }
11 |
12 | allprojects {
13 | repositories {
14 | google()
15 | mavenCentral()
16 | jcenter()
17 | maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/lib/android-smsmms/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/lib/android-smsmms/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/lib/android-smsmms/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Dec 30 08:21:22 CST 2014
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
7 |
--------------------------------------------------------------------------------
/lib/android-smsmms/library/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | dependencies {
4 | implementation 'com.klinkerapps:logger:1.0.3'
5 | implementation 'com.squareup.okhttp:okhttp:2.5.0'
6 | implementation 'com.squareup.okhttp:okhttp-urlconnection:2.5.0'
7 | }
8 |
9 | android {
10 | compileSdkVersion 31
11 |
12 | defaultConfig {
13 | minSdkVersion 23
14 | targetSdkVersion 31
15 | }
16 |
17 | lintOptions {
18 | abortOnError false
19 | }
20 |
21 | useLibrary 'org.apache.http.legacy'
22 | }
23 |
24 | apply plugin: 'signing'
--------------------------------------------------------------------------------
/lib/android-smsmms/library/gradle.properties:
--------------------------------------------------------------------------------
1 | VERSION_NAME=5.2.6
2 | VERSION_CODE=76
3 | GROUP=com.klinkerapps
4 |
5 | POM_DESCRIPTION=Android Messaging library for SMS and MMS
6 | POM_URL=https://github.com/klinker41/android-smsmms
7 | POM_SCM_URL=https://github.com/klinker41/android-smsmms
8 | POM_SCM_CONNECTION=scm:git@github.com:klinker41/android-smsmms.git
9 | POM_SCM_DEV_CONNECTION=scm:git@github.com:klinker41/android-smsmms.git
10 | POM_LICENCE_NAME=The Apache Software License, Version 2.0
11 | POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
12 | POM_LICENCE_DIST=repo
13 | POM_DEVELOPER_ID=klinker41
14 | POM_DEVELOPER_NAME=Jacob Klinker
15 |
16 | POM_NAME=Andorid Messaging
17 | POM_ARTIFACT_ID=android-smsmms
18 | POM_PACKAGING=aar
19 |
--------------------------------------------------------------------------------
/lib/android-smsmms/library/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/lib/android-smsmms/library/src/main/java/com/google/android/mms/APN.java:
--------------------------------------------------------------------------------
1 | package com.google.android.mms;
2 |
3 | public class APN {
4 | public String MMSCenterUrl = "";
5 | public String MMSPort = "";
6 | public String MMSProxy = "";
7 |
8 | public APN(String MMSCenterUrl, String MMSPort, String MMSProxy) {
9 | this.MMSCenterUrl = MMSCenterUrl;
10 | this.MMSPort = MMSPort;
11 | this.MMSProxy = MMSProxy;
12 | }
13 |
14 | public APN() {
15 |
16 | }
17 | }
--------------------------------------------------------------------------------
/lib/android-smsmms/library/src/main/java/com/google/android/mms/MMSPart.java:
--------------------------------------------------------------------------------
1 | package com.google.android.mms;
2 |
3 | import android.net.Uri;
4 |
5 | public class MMSPart {
6 | public String Name = "";
7 | public String MimeType = "";
8 | public byte[] Data;
9 | public Uri Path;
10 | }
--------------------------------------------------------------------------------
/lib/android-smsmms/library/src/main/res/drawable-hdpi/ic_alert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/lib/android-smsmms/library/src/main/res/drawable-hdpi/ic_alert.png
--------------------------------------------------------------------------------
/lib/android-smsmms/library/src/main/res/drawable-mdpi/ic_alert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/lib/android-smsmms/library/src/main/res/drawable-mdpi/ic_alert.png
--------------------------------------------------------------------------------
/lib/android-smsmms/library/src/main/res/drawable-xhdpi/ic_alert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/lib/android-smsmms/library/src/main/res/drawable-xhdpi/ic_alert.png
--------------------------------------------------------------------------------
/lib/android-smsmms/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':library', ':sample'
--------------------------------------------------------------------------------
/metadata/android/en-US/changelogs/137.txt:
--------------------------------------------------------------------------------
1 | Initial F-Droid release!
2 |
--------------------------------------------------------------------------------
/metadata/android/en-US/changelogs/138.txt:
--------------------------------------------------------------------------------
1 | Added #FreeiMessage notice
2 |
--------------------------------------------------------------------------------
/metadata/android/en-US/full_description.txt:
--------------------------------------------------------------------------------
1 | Apple's messaging network iMessage has gained a lot of popularity in recent years, though it has long been locked down to their platforms.
2 | But now, AirMessage makes it easy to send and receive messages to your friends and family through group chats, images, videos and audio messages!
3 |
4 | - Send and receive messages over iMessage
5 | - Chat together with your friends in groups
6 | - Share images, videos, documents and more
7 | - Enjoy a clean, beautiful messaging experience
8 |
9 | The F-Droid release of AirMessage for Android excludes certain features found in the main release, such as Sign In with Google and location attachments.
10 |
11 | Please note that a Mac computer is required to use this app.
12 |
--------------------------------------------------------------------------------
/metadata/android/en-US/images/featureGraphic.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/metadata/android/en-US/images/featureGraphic.jpg
--------------------------------------------------------------------------------
/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/metadata/android/en-US/images/phoneScreenshots/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/metadata/android/en-US/images/phoneScreenshots/1.jpg
--------------------------------------------------------------------------------
/metadata/android/en-US/images/phoneScreenshots/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/metadata/android/en-US/images/phoneScreenshots/2.jpg
--------------------------------------------------------------------------------
/metadata/android/en-US/images/phoneScreenshots/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/metadata/android/en-US/images/phoneScreenshots/3.jpg
--------------------------------------------------------------------------------
/metadata/android/en-US/images/phoneScreenshots/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/metadata/android/en-US/images/phoneScreenshots/4.jpg
--------------------------------------------------------------------------------
/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | Use iMessage on your Android phone! (Mac computer required)
2 |
--------------------------------------------------------------------------------
/metadata/android/en-US/title.txt:
--------------------------------------------------------------------------------
1 | AirMessage
2 |
--------------------------------------------------------------------------------
/metadata/android/fr-FR/full_description.txt:
--------------------------------------------------------------------------------
1 | Le réseau de messagerie d’Apple iMessage a acquis une grande popularité ces dernières années, bien qu’il soit longtemps lié à leurs plateformes.
2 | Mais maintenant, AirMessage facilite l’envoi et la réception des messages à vos amis et votre famille grâce à des discussions de groupe, des images, des vidéos et des messages audio!
3 |
4 | S’il vous plaît notez qu’un ordinateur Mac est nécessaire pour utiliser cette appli.
5 |
6 | La version F-Droid d'AirMessage pour Android exclut certaines fonctionnalités présentes dans la version principale, telles que la connexion avec Google et les pièces jointes de localisation.
7 |
--------------------------------------------------------------------------------
/metadata/android/fr-FR/short_description.txt:
--------------------------------------------------------------------------------
1 | Utilisez le réseau de messagerie d'Apple sur ton Android! (ordi. Mac est requis)
2 |
--------------------------------------------------------------------------------
/metadata/android/fr-FR/title.txt:
--------------------------------------------------------------------------------
1 | AirMessage
2 |
--------------------------------------------------------------------------------
/metadata/android/ja-JP/full_description.txt:
--------------------------------------------------------------------------------
1 | Appleのメッセージネット iMessage は最近大いに人気がありますが、Apple のディバイスしか使えられませんでした。
2 | 今から、AirMessage で改めてメッセージや画像やビデオを友達や家族に送れます!
3 |
4 | - iMessage でメッセージを送受します
5 | - グループ会話で一緒に話します
6 | - 画像やビデオやドキュメントを共有します
7 | - 綺麗な経験です
8 |
9 | Android 版 AirMessage の F-Droid リリースでは、Google とのサインインや位置情報の添付など、通常のリリースに含まれる一部の機能が除外されています。
10 |
11 | (Mac コンピュータが必要であることに注意してください。)
12 |
--------------------------------------------------------------------------------
/metadata/android/ja-JP/short_description.txt:
--------------------------------------------------------------------------------
1 | iMessage を Android 携帯で利用します!(Mac コンピューターが必要です)
2 |
--------------------------------------------------------------------------------
/metadata/android/ja-JP/title.txt:
--------------------------------------------------------------------------------
1 | AirMessage
2 |
--------------------------------------------------------------------------------
/secrets.default.properties:
--------------------------------------------------------------------------------
1 | MAPS_API_KEY=AIzaSyC_nkyGjm9aBJig5dS5Qv-ljrSv5j1Zb7Q
2 | CONNECT_ENDPOINT=wss://connect-open.airmessage.org
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | include ":android-smsmms"
4 | project(":android-smsmms").projectDir = file("lib/android-smsmms/library")
--------------------------------------------------------------------------------
/signingshared/shared.keystore.disabled:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/airmessage/airmessage-android/0758ea0273f942881fd8de605aa349b40a1c404c/signingshared/shared.keystore.disabled
--------------------------------------------------------------------------------