| Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
- Set category as toggleable
- Set title as the app name when active to align more with
how other tiles look on newer versions of Android
|
|
Instead use a static file
|
|
The TimeChangedReceiver was not actually needed because
AlarmManager.RTC uses a UTC timestamp that we convert the triggerAt
ZonedDateTime to. So the trigger time is scheduled in UTC+0 and will
thus trigger at the correct time redardless of time zone changes.
|
|
|
|
We need to set this in order for a release build of the app to the
profileable.
|
|
Instead of scheduling system notifications from a flow we now
schedule them independently from the app lifecycle via AlarmManager.
This is done so that for example an expiry notification that the user
dismissed won't get redisplayed if the app process gets killed and
then restarted.
When the account exiry time is fetched we schedule an alarm that will
show a notification 3 days before the account time expires. This alarm
then also schedules a new alarm to show the following notification and
so on.
To make this work this PR also introduces two new broadcast receivers;
one on boot received listener and one on time time/timezone changed
listener.
Beause Android clears alarms when the devices is rebooted/the time is
changed we need these listeners to re-trigger the alarm.
To enable the broadcast receivers to re-trigger the alarm we also have
to persist the expiry time in the DataStore preferences.
|
|
|
|
|
|
These are only required if we use passkeys or uses methods that make
use DAL (Digital Asset Links).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Co-authored-by: Jonatan Rhodin <jonatan.rhodin@mullvad.net>
Co-authored-by: Markus Pettersson <markus.pettersson@mullvad.net>
Co-authored-by: David Lönnhager <david.l@mullvad.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also prevent foreground service notification from being dismissed
|
|
This commit also adds brief documentation in the manifest to motivate
the export configuration.
|
|
The main activity and tv activity are both designed to be running as
singleTask and the app would crash if both were started. This would not
be common, but possible, on a phone or tablet, however this can
potentially occur frequently on Android TV (perhaps depending on OEM),
as both categories LAUNCHER and LEANBACK_LAUNCHER are used. E.g.the tv
launcher would use LEANBACK_LAUNCHER whereas the settings app would use
LAUNCHER.
As the tv activity isn't used for any customization atm, this was fixed
by simply removing the tv activity and adding the LEANBACK_LAUNCHER
category to the main activity.
|
|
By default in Android, a service will be automatically killed if it
belongs to a task that was removed (i.e. from recent apps) without a
chance to run any cleanup logic.
In this case, the lack of cleanup would lead to a crash and auto-restart
(triggered by the system) resulting in a auto-connect. To fix this, a
graceful stop will be ran if the task is removed while the tunnel is
disconnected (service not running as foreground). However if the tunnel
is in other states than disconnected (service running as foreground),
the service should continue to run as it's bound by the system.
|
|
Change Android tile title/label to "Toggle VPN" to better inform the
user about the tile action. Also set the subtitle (on Android Q and
above) to match the state shown in the notification.
|
|
The purpose of this is to:
* Comply better with the default Android project structure
(see https://developer.android.com/studio/build).
* Avoid conflicts between project and app dependencies and plugins.
|