* basic layout of new archive-link, including icon and unread counter
* remove 'archived chats' from main menu
* vertically align elements of new archive-link
* show unread indicator also for archived chats
* show muted unread counter in grey
* use shorter label for the 'Archive' link
sdk16/android4.1 does not support RTL fully,
therefore just return LTR in this case
(this is also what `ViewCompat.getLayoutDirection()`
and `View.getLayoutDirection()` are doing).
always using `ViewCompat.getLayoutDirection()`, however,
causes problems as the layout is based on the content then
(see #2422)
closes#2420
notificationManager.notify() sometime crashes,
it seems to be on some OS versions
in combination with missing sounds (maybe deleted system sounds, idk).
i could not reproduce the issue,
however, by the stack traces reported in the gplay backend,
adding a try/catch block should help.
there is also a similar issue reported on stackoverflow ,
https://stackoverflow.com/questions/72491592/notificationmanager-notify-throwing-securityexception-only-on-android-11-and-1
in the issue, ppl try to fall back to some default parameters in the exception block,
however, as it is a bit unclear what really the issue is,
one only risks further crashes; also, the crashes are still quite rare,
sth. seems to be wrong in the OS here,
so we should not try to be too smart here.
* fix crash in share-to-delta
the crash was introduced by 1.34.2 that was released for testing only.
reason is a wrong `exported` flag - it makes sense to have `exported="true"` here.
the flag was added in https://github.com/deltachat/deltachat-android/pull/2407
as needed for android12 - and i was assuming that the old default was `false`
and set that value to all missing ones.
that assumption seems to be wrong, so we should double-check all flags
changed by https://github.com/deltachat/deltachat-android/pull/2407
* set exported=true; this is the pre-android12 default in case there intent-filters
* bump targetSdkVersion to 32
* explicitly set `android:exported` for `indent-filter`
this is required since targetSdkVersion 31,
https://developer.android.com/guide/components/intents-filters#Receiving
as the default was `false` before,
i just explicitly set `android:exported="false"` without looking in the details
of each filter.
* update to gradle 7.2.2; this might be needed to get warnings etc.
* update androidx dependencies
at least the update of androidx.sharetarget is required because of the missing
`android:exported`; i took the chance to update all androidx depenencies.
see https://developer.android.com/jetpack/androidx/releases/appcompat
for a CHANGELOG of each dependency.
* use explicit dependency instead of transitive ones; this fixes a weird duplicate error, see https://stackoverflow.com/questions/69817925/problem-duplicate-class-androidx-lifecycle-viewmodel-found-in-modules
* work around google's poor design decision wrt FLAG_MUTABLE
instead of setting a default behavior and logging a warning,
google crashes the application when the flag is missing on newer androids.
and setting the flag for older API seems to be undefined and therefore a lot of
Build.VERSION.SDK_INT >= Build.VERSION_CODES.M would be required each time
a PendingIntent object is constructed ...
our Util returns either the new flag or zero,
so that can just be used unconditionally on construction.
* update dependencies but exoplayer to mitigate issues with FLAG_MUTABLE
exoplayer needs more love and updating opens a can of worms;
i tested, at least in the emulator, video and voice message playback
works as usual, so let's update exoplayer if needed.