Commit Graph
89 Commits
Author SHA1 Message Date
Michael W e128bff457 Messaging: Language cleanup
No unnecessary boxing, enhanced for loops, redundant checks and throws,
imports (removal, reordering), possible void returns

Change-Id: I7a8e1b2007e3b0906e01b41785c518d02c2f3fab
2024-12-26 15:54:37 +01:00
Michael W e335f6bec8 Messaging: Use ActivityResultContracts for media and contacts
Instead of handling showing and picking the media ourselves,
use existing AcitivityResultContracts to pick images, videos
or contacts

Change-Id: I20079ad94882cc6bbfeae8d57ca0e4aa30612c01
2024-12-26 15:54:37 +01:00
Michael W b12a4f8a3a Messaging: Fix loader not auto-restarting
When suspending and resuming the app, somehow the loader returns
immediately after onResume() with onLoadFinished() but somehow has no
data left (data.moveToNext() returns false) which makes the conversation
close immediately.
Restarting the loader has the desired result: We can leave the app
temporarily and come back to the same conversation again

This also fixes adding a vcard attachment (since that temporarily
leaves the app)

Change-Id: Id52e55563a11474fa776323477aa900ca4be0bbe
2024-12-26 15:54:37 +01:00
Michael W 5403d02b5d Messaging: Fix javadoc
Change-Id: Ia1b0a8fa9a5e74078a68a55ca1953b6f085521b1
2024-12-26 15:54:37 +01:00
Michael W e29b158fba Messaging: Remove unused code
Change-Id: I8093bb3e305ae323f7069bf42f9e83f8c8647cc7
2024-12-26 15:54:37 +01:00
Michael W 0069df879a Messaging: Replace explicit types
Change-Id: I2165b3dec73973a2a82d8b3c7c364b5f011e597d
2024-12-26 15:54:37 +01:00
Michael W 9538179c75 Messaging: Use try-with-resource
Change-Id: I6649517cbd990502dfcb54f078764cf05f210268
2024-12-26 15:54:37 +01:00
Michael W f31b198928 Messaging: Remove usages of DataUsageStatUpdater
Since Q, contacts affinity isn't supported anymore, as reflected by
the documentation plus DataUsageStatUpdater code itself

Change-Id: I35e00d0fa743525c3b977c9756126ae764726afa
2024-12-26 15:54:37 +01:00
Michael W 1914db5ea4 Messaging: Convert further parts to androidx
CursorLoader, LoaderManager, Preferences, Fragments, ...

Change-Id: I8787b2db365249839547c6d5c21ab7cd5ff42082
2024-12-26 14:55:13 +01:00
Michael W d430161ca0 Messaging: Fix warnings about drawables and colors
* They need the theme provided now
* Follow the suggestion by AS
  (sometimes we use ResourcesCompat, sometimes not)

Change-Id: Ie3023fee13a6fc04bd4b912721ba19dcc08befba
2024-12-26 14:55:13 +01:00
Michael W fd63d5f125 Messaging: Use StandardCharsets where possible
Change-Id: I45a19c47262116d34260e1957145580a7f97168e
2024-12-26 14:55:13 +01:00
Michael W a2f67b4f7b Messaging: Remove GServices
We don't have an actual implementation returning anything but the
defaults, so apply the defaults directly anywhere we need them

Change-Id: Ic651b4b13977799f2f4d2c702c430798fbff77f8
2024-12-26 14:55:12 +01:00
Michael W 7f22a3eea7 Messaging: Remove low storage handling
* SMS are the least of your storage issues, if you reach the limit
* Both Intent.ACTION_DEVICE_STORAGE_LOW and
  Intent.ACTION_DEVICE_STORAGE_LOW are not delivered to apps after O
* Remove all now unused strings from all languages - we don't sync those
  with crowdin (yet)

Change-Id: If01f937acdafbb34d5a9e792db54de4761ec4cc5
2024-12-26 14:55:12 +01:00
Michael W d43b6ff1c4 Messaging: Let there be lambdas
Change-Id: Iee1fc46c92ea9159abb10d92d34baee937bdee0c
2024-12-26 14:55:12 +01:00
Michael W c1b4aa4dfe Messaging: Nullability
Change-Id: I8bcde2a868a9c8989971d056be24ff4986e4f8f3
2024-12-26 14:55:12 +01:00
Michael W e35d385149 Messaging: Remove unnecessary toString() and String.valueOf() calls
Change-Id: I5d5624386ba72b9e7074a7da909f78baaee73f75
2024-12-26 14:55:12 +01:00
Michael W 21cb2b6289 Messaging: Fix modifiers
We either have too few or too many

Change-Id: I09a9a38b859c68526fcbcdbc7862afe1d693f6c0
2024-12-26 14:55:12 +01:00
Michael W 3b7f05ba67 Messaging: Replace ExifInterface with its androidx counterpart
Change-Id: I35ba14886b9f837d576f1cd385869614454c921f
2024-12-26 14:55:12 +01:00
Michael W d869533f6f Messaging: Use xml drawables
Replace the pngs with xml drawables

Change-Id: I71be32c36194d3b34b54287a09789f73087600ef
2024-12-26 14:55:12 +01:00
Michael W 7c55a6d56a Messaging: Remove compatibility for old android versions
Change-Id: Id9065d60525a509271a0e64c0e349e857cb998e2
2024-12-26 14:55:12 +01:00
Michael W a65de2aee3 Messaging: Rename androidx.appcompat.mms
* Someone apparently decided to "Replace-In-Files" these before, but
  they are not correct according to the folder structure
* Since it is just annoying to read the code in AS when it does not
  match the folder, change the package name back

Change-Id: Iea5c51aeb9e1f5b650a1009348065c7c38cddbeb
2024-12-26 14:55:12 +01:00
Michael W bc93ce392e Messaging: Bump sdk (>=33, <=34)
* Since we already compile with sdk "current", this is just the next
  logical step
* We skip 35 for now since edge-to-edge stuff can be done later
* It also gives AS the possibility to recognize necessary steps
* WRITE_SMS permission removed in API 23

Change-Id: Ia567fa9e42772f0b6d6e6fdc0d21b5635ff9dcc5
2024-12-26 14:55:12 +01:00
Michael W f3863c9a39 Messaging: Remove tests
Nobody runs them anyway

Change-Id: I2b07847509269af31430abc6cb0fb190f08d45f9
2024-12-26 14:55:00 +01:00
Ido Ben-Hur d8a0bf022d Messaging: FrameSequence -> ImageDecoder
fixes playing / displaying gifs
replaces old deprecated FrameSequence & FrameSequenceDrawable libs

Change-Id: Id65fff90bdd09af86480636a8a0e404aeb39580f
2024-09-16 02:25:12 +03:00
nift4 77203378cc Messaging: Add notification channels where missing
Change-Id: I1cb3177704542fc48c42dc18a9e1f4d3118d4193
2024-09-09 05:46:59 +03:00
Michael W c416c287eb Messaging: Don't show numbers of contacts multiple times
* Somehow there are multiple entries per some numbers, sometimes stored
  with, sometimes without spaces and/or invisible characters
* This leads to the same number being shown multiple times
* Don't add those entries by comparing number and type of all
  already added entries with the staging one

Change-Id: Ic815393d3d4f4ba56107f42c9d8940309564554c
2024-09-09 05:46:59 +03:00
Han Wang 1970f9ea99 Messaging: Show quick reply choices only on wearable devices
Change-Id: I4b81643c051a9b1377f2046c1aa0515c590736fc
2024-09-09 05:46:58 +03:00
Blaise a4cbbd9039 Messaging: Contact Colors
Adds the option to use individual colors for contacts.
Matches the colors used in Contacts.

Change-Id: I9f222308a900c5d47ec16f83232bd7f6d9af6cd7
2024-09-09 05:46:58 +03:00
Luca Stefani 4246987beb Messaging: Implement per conversation channels. Update API level to 28.
* Get rid of in-app settings for notifications, replaced by channels features
* Remove all the notification plumbing and dead code

Test: m, manual

Signed-off-by: Luca Stefani <luca.stefani.ge1@gmail.com>
Signed-off-by: Joey <joey@lineageos.org>
Signed-off-by: Danny Baumann <dannybaumann@web.de>
Signed-off-by: Arne Coucheron <arco68@gmail.com>
Signed-off-by: Lyubo <lyubodzhamov@gmail.com>
Change-Id: Idb39ca32751d40b3376934775d2119dd6cc7e297
2024-09-09 05:46:38 +03:00
Arun Valiaparambil 4b218d1561 Play an audible notification on receiving a class zero message.
Changes ported from http://review.cyanogenmod.org/#/c/125457/

PAELLA-123

Change-Id: I1289790d32a3b69bf7892025bac5fa3bd74eeefc
2024-09-09 05:46:37 +03:00
Adnan Begovic 086bb5c3f5 Messaging: Implement option for swipe right to delete.
Squashed commit of the following:

Author: Adnan Begovic <adnan@cyngn.com>
Date:   Thu Jan 14 17:20:43 2016 -0800
Messaging: Implement option for swipe to delete.

  No one wants to swipe to archive, that's stupid.

Change-Id: Ia8f0fc675582ef343311e60b755e284322f25102

Author: chengzhi.hou <chengzhi.hou@ck-telecom.com>
Date:   Wed Feb 24 20:01:17 2016 +0800
Messaging: Swipe right to delete conversation

Change "swipe delete" to "swipe right delete", so SwipeArchive and SwipeDelete
can exist at the same time.

Change-Id: Id66167c2e749f8ab0ee917e0138027c7404b8c90

Author: Michael Bestas <mikeioannina@cyanogenmod.org>
Date:   Tue Mar 1 02:27:16 2016 +0200
Improve swipe to delete strings

Change-Id: I180d09a6680084d9fd87c6dafd56db18ca5a580a

Author: Joey Rizzoli <joey@cyanogenmoditalia.it>
Date:   Mon Oct 17 16:32:25 2016 +0200
Messaging: show snackbar instead of toast when deleting conversation

more consistency with archive action

Change-Id: I06129850860a2a51c10ade65fb87c9f37a0c2bfa
Signed-off-by: Joey Rizzoli <joey@cyanogenmoditalia.it>

Change-Id: Ia8f0fc675582ef343311e60b755e284322f25102
2024-09-09 05:45:11 +03:00
Cole Faust 50b73ca58a Fix errorprone warnings that should be errors
This commit is part of a large scale change to fix errorprone
errors that have been downgraded to warnings in the android
source tree, so that they can be promoted to errors again.
The full list of changes include the following, but not all
will be present in any one individual commit:

BadAnnotationImplementation
BadShiftAmount
BanJNDI
BoxedPrimitiveEquality
ComparableType
ComplexBooleanConstant
CollectionToArraySafeParameter
ConditionalExpressionNumericPromotion
DangerousLiteralNull
DoubleBraceInitialization
DurationFrom
DurationTemporalUnit
EmptyTopLevelDeclaration
EqualsNull
EqualsReference
FormatString
FromTemporalAccessor
GetClassOnAnnotation
GetClassOnClass
HashtableContains
IdentityBinaryExpression
IdentityHashMapBoxing
InstantTemporalUnit
InvalidTimeZoneID
InvalidZoneId
IsInstanceIncompatibleType
JUnitParameterMethodNotFound
LockOnBoxedPrimitive
MathRoundIntLong
MislabeledAndroidString
MisusedDayOfYear
MissingSuperCall
MisusedWeekYear
ModifyingCollectionWithItself
NoCanIgnoreReturnValueOnClasses
NonRuntimeAnnotation
NullableOnContainingClass
NullTernary
OverridesJavaxInjectableMethod
ParcelableCreator
PeriodFrom
PreconditionsInvalidPlaceholder
ProtoBuilderReturnValueIgnored
ProtoFieldNullComparison
RandomModInteger
RectIntersectReturnValueIgnored
ReturnValueIgnored
SelfAssignment
SelfComparison
SelfEquals
SizeGreaterThanOrEqualsZero
StringBuilderInitWithChar
TreeToString
TryFailThrowable
UnnecessaryCheckNotNull
UnusedCollectionModifiedInPlace
XorPower

See https://errorprone.info/bugpatterns for more
information on the checks.

Bug: 253827323
Test: m RUN_ERROR_PRONE=true javac-check
Change-Id: I8b1533cbea835343dcf589cbaa57c63794be58bd
2022-10-15 21:33:28 -07:00
Taesu Lee bccecb6393 Fix wrong sync message issue for pending outgoing messages
If sync operation is occurred between ResendMessageAction and
SendMessageAction, the pending outgoing messages in local db are deleted
and new messages are added from remote db.

To fix this issue, ResendMessageAction will update RETRY_TIMESTAMP only.
And RECEIVED_TIMESTAMP and SENT_TIMESTAMP will be updated in
SendMessageAction when the message is queued.

Test: manual

Change-Id: I0ffa6f46a7094ec3dfd2954d4313b78dd57d6994
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2021-01-12 18:50:34 +09:00
Taesu Lee 8c08a3f419 Mark messages as failed if SIM is inactive
If a SIM is inactive, Mark messages corresponding to the SIM as failed
instead of updating selfId as default selfId. The failed messages could
be sent through the SIM manually if the SIM is re-activated.

Test: Manual

Change-Id: I1eee7c12aaedebe8aa3e0c41b4b057758a3b17a2
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-10-06 12:33:21 +09:00
Raman Tenneti 4b52654e98 AOSP/Messaging - Update language to comply with Android's inclusive language guidance.
See https://source.android.com/setup/contribute/respectful-code for reference

BUG=161896447

Test: make and make messagingtests
Change-Id: I01c520f1d5e9eab8dbb25b08d133ae34bd301093
2020-07-29 16:43:46 -07:00
Raman Tenneti b1aa213ce9 AOSP/Messaging - Changes to make unit tests to run and pass.
+ Added missing androix libraries to LOCAL_STATIC_ANDROID_LIBRARIES.
+ Added keep class statements for androidx and messaging classes.
+ Deleted Assert.isEngBuild call (this package is the last user of that method).
+ Added import statements for androidx classes.

Test: manual - Tested the messaging UI. Ran the following tests on Pixel phone.

$ make -j 40
$ make messagingtests -j
$ find out -name "messaging*.apk" -print -exec ls -l {} \;
-rw-r----- 1 rtenneti primarygroup 733809 Jul  9 17:42 out/target/product/bonito/testcases/messagingtests/arm64/messagingtests.apk
-rw-r----- 1 rtenneti primarygroup 10799132 Jul  9 18:34 out/target/product/bonito/product/app/messaging/messaging.apk

$ adb install -r -d -t  out/target/product/bonito/product/app/messaging/messaging.apk
$ adb install -r -d -t  out/target/product/bonito/testcases/messagingtests/arm64/messagingtests.apk
$ adb shell am instrument -w com.android.messaging.test

com.android.messaging.datamodel.BindingTest:.......
com.android.messaging.datamodel.BitmapPoolTest:....
com.android.messaging.datamodel.ConversationListTest:.
com.android.messaging.datamodel.DataModelTest:...
com.android.messaging.datamodel.FrequentContactsCursorBuilderTest:...
com.android.messaging.datamodel.MemoryCacheManagerTest:.
com.android.messaging.datamodel.ParticipantRefreshTest:..........
com.android.messaging.datamodel.action.ActionServiceSystemTest:.....
com.android.messaging.datamodel.action.ActionServiceTest:..
com.android.messaging.datamodel.action.ActionTest:.....
com.android.messaging.datamodel.action.GetOrCreateConversationActionTest:.
com.android.messaging.datamodel.action.ReadWriteDraftMessageActionTest:......
com.android.messaging.datamodel.data.ConversationMessageDataTest:...
com.android.messaging.datamodel.data.ConversationParticipantsDataTest:.
com.android.messaging.datamodel.media.ImageRequestTest:..
com.android.messaging.datamodel.media.MediaResourceManagerTest:.....
com.android.messaging.ui.CustomHeaderViewPagerTest:.
com.android.messaging.ui.MultiAttachmentLayoutTest:...
com.android.messaging.ui.attachmentchooser.AttachmentChooserFragmentTest:.
com.android.messaging.ui.contact.ContactListItemViewTest:....
com.android.messaging.ui.contact.ContactPickerFragmentTest:......
com.android.messaging.ui.conversation.ComposeMessageViewTest:..
com.android.messaging.ui.conversation.ConversationActivityUiStateTest:....
com.android.messaging.ui.conversation.ConversationFragmentTest:..
com.android.messaging.ui.conversation.ConversationInputManagerTest:.....
com.android.messaging.ui.conversation.ConversationMessageViewTest:...
com.android.messaging.ui.conversationlist.ConversationListFragmentTest:...
com.android.messaging.ui.conversationlist.ConversationListItemViewTest:....
com.android.messaging.ui.mediapicker.AudioRecordViewTest:.
com.android.messaging.ui.mediapicker.CameraManagerTest:......
com.android.messaging.ui.mediapicker.GalleryGridItemViewTest:.....
com.android.messaging.ui.mediapicker.MediaPickerTest:..
com.android.messaging.util.BugleGservicesTest:.
com.android.messaging.util.YouTubeUtilTest:.
Test results for InstrumentationTestRunner=.........................................
.........................................
...............................
Time: 9.903

OK (113 tests)

Change-Id: If8fd8036791027739eb9bbb1d3849a46211a5137
2020-07-09 18:37:41 -07:00
Taesu Lee 615ebb9dd6 Fix SecurityException at getActiveSubscriptionInfoList() on N and O
Creating ConnectivityUtil instances after checking the minimum set of
permissions since SubscriptionManager#getActiveSubscriptionInfoList()
requires READ_PHONE_STATE and users can revoke the permission.
On P and beyond, the subscription list will be filtered instead when no
permission.

Bug: 159421050
Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Iafc3c57060e1893a91e629b1b3e3ba9ad78967cb
2020-06-22 19:15:39 +09:00
Taesu Lee 0c7ab8c20a Remove only one Lambda Exp for JAVA 7
Remove a Lambda Exp and replace ConcurrentHashMap#computeIfAbsent() with
containsKey() and put() so that this app can be built using JAVA 7.

Test: Build

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I7ff8a3b5fc4673dfe05c5ecc9418d377f3ed4f2e
2020-06-19 19:30:58 +09:00
Taesu Lee dcfe928ff3 Fix creating ConnectivityUtil to work on any platform
After this CL, ConnectivityUtil for default subId is used again on pre
N because TelephonyManager has createForSubscriptionId() for a specific
subId from N.
Nevertheless, listen() uses the default subId on PhoneStateListener
instead of the subId on the manager still even N. On O and beyond,
ConnectivityUtil works correctly on multi-sim devices.

Revert "Fix missing computeIfAbsent() method in L_MR1 and M"

This reverts commit f0ccb76d8d.

Reason for revert: Manage ConnectivityUtil instances for subIds at least
                   on N instead.

Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I2f08928a6798a2ce275c5c75569ad379999d274c
2020-06-18 19:24:27 +09:00
Taesu Lee f0ccb76d8d Fix missing computeIfAbsent() method in L_MR1 and M
Replace ConcurrentHashMap#computeIfAbsent() with containsKey() and put()
since computeIfAbsent() is added in API level 24.

Bug: 158846265
Test: Build

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I3c43f0d7b1f289f0442c9359de4f099217244387
2020-06-17 19:03:26 +09:00
Taesu Lee 8b347325fa Allow call to phone numbers or voice mail numbers only
It allows to call to well-formatted phone numbers or carrier specific
phone numbers starting with star sign such as *20 so that user can make
a call directly in a conversation for voice mail SMSs.

Revert "Check whether dialable only"

This reverts commit dbc43316cf.

Reason for revert: a call icon is disappeared for well-formatted phone
                   number with parentheses, dash and etc.

Test: Check the call icon in conversations for phone numbers and voice
      mail numbers.

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I1b279f8a5372b00a5a0c572f9969731f1e633389
2020-06-11 18:56:04 +09:00
Taesu Lee fcf6699742 Parse recipients from RESPOND_VIA_MESSAGE correctly
UriUtil#parseRecipientsFromSmsMmsUri() will returns a comma-separated
recipients for common use so that InsertNewMessageAction#createMessage()
can create or get a conversation correctly for RESPOND_VIA_MESSAGE.
In addition, mms/mmsto schemes are added. And it includes small cleanup
intent-filters for LaunchConversationActivity.

Test: adb shell am startservice
-a android.intent.action.RESPOND_VIA_MESSAGE -d "sms:12345678,87654321"
-e android.intent.extra.TEXT "Text"

Change-Id: I291dc765a46846982d059016d44f90873c687867
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-05-28 16:43:29 +09:00
Taesu Lee dbc43316cf Check whether dialable only
It allows to call to any sender such as *20(Voice Mail Number for
Chile Claro).

Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Ifca83c5f05018de627fa38318fd4b6db20370910
2020-05-25 15:22:26 +09:00
Raman Tenneti eb1e0417eb Revert "Messaging: Add "Mark as read" quick action for message notifications"
This reverts commit f19e916a0d.

Reason for revert: Reverting per Taesu Lee's comments, because it doesn't work and has issues.

Change-Id: I778362b628f4c3ae076dd943e77dee415984fba0
2020-05-20 19:47:44 +00:00
Treehugger Robot 3de360b933 Merge "Revert "Messaging: Show quick reply choices only on wearable devices"" 2020-05-20 18:57:44 +00:00
Raman Tenneti 3a9f54cee8 Revert "Messaging: Show quick reply choices only on wearable devices"
This reverts commit dffc4fa578.

Reason for revert: Reverting per Taesu Lee's comments - https://android-review.googlesource.com/c/platform/packages/apps/Messaging/+/1259839

@Raman,
This new feature still doesn't work properly.
As we know Luca has been submitted CL:1271087 and CL:1271088 to fix it. But it still has issues.

Change-Id: I2e8eb1fce302b12f3f30b8163da7e749c08733d9
2020-05-19 22:17:39 +00:00
Taesu Lee 0ff700cea4 Rescheduling pending messages after outside window failure
No more rescheduling for pending messages after DownloadMmsAction is
failed caused by outside window. Any pending download messages will be
remained as the DOWNLOADING state without actual downloading operations
and sending a DEFERRED M-NotifyResp.ind even.
It will reschedule pending messages whenever sending or downloading is
failed including outside window failure case. And it also removes dup
scheduling and fix some typo.

Test: Manual

Change-Id: Ie37088347c69f25d838875830fc65ce7727fefe6
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
2020-05-18 13:16:50 +09:00
Taesu Lee 9635b646d8 Fix NPE on MultiConversationNotificationState
Use the most recent notification's state to print out log because
mContent is null in case of a notification for multiple messages in at
least 2 different conversations.
And no need sanitizePII() since this log is only for VERBOSE already.

Test: 1) adb shell setprop log.tag.MessagingAppNotif VERBOSE
      2) Receive SMS from different senders

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Ie300620f0014577ca65b9a7e3a4c397a39717992
2020-05-08 19:01:59 +09:00
Taesu Lee 7ccb748e61 Handle delivered messages as completed messages
Delivered messages could be forwarded and sent time can be shown on
MessageDetailsDialog.

Test: Manual

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I6e24bdfe6a037ab588914327dbd8abf3f30512ea
2020-04-24 10:22:39 +09:00
Treehugger Robot 2af5b4b045 Merge "Fix assert fail during onSaveInstanceState()" 2020-03-31 19:02:43 +00:00