Skip to content

Latest commit

 

History

History
49 lines (36 loc) · 2.77 KB

File metadata and controls

49 lines (36 loc) · 2.77 KB

⚠ Security

Permissions

com.sadellie.unitto.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

Read (boring): https://developer.android.com/about/versions/14/behavior-changes-14#runtime-receivers-exported

android.permission.VIBRATE

Used for haptic feedback on button presses. Make sure your Touch feedback is enabled in device settings.

android.permission.INTERNET

Used in Unit Converter to update currency rates. Requests are made only when you select a currency unit. See: CurrencyApiService.kt and UnitsRepository.kt

android.permission.ACCESS_NETWORK_STATE

Used in Unit Converter as a callback. Retries to update currency rates if there was an error (no network, for example) and the Internet connection is back. See: NetworkUtils.kt and ConverterScreen.kt

android.permission.WAKE_LOCK

Not used explicitly. Added automatically by Widget feature.

android.permission.RECEIVE_BOOT_COMPLETED

Not used explicitly. Added automatically by Widget feature.

android.permission.FOREGROUND_SERVICE

Not used explicitly. Added automatically by Widget feature.

Network service

By default the app uses Free Currency Exchange Rates API by fawazahmed0. Requests are send to cdn.jsdelivr.net.

Alternative service

Alternative A

Same rates, but hosted by Cloudflare: https://latest.currency-api.pages.dev

Alternative B

You can run your own service that relies on lineofflight/frankfurter. Both services can be self-hosted: this and frankfurter (by default a public instance of frankfurter is used)

  1. Navigate to alternative
  2. Install packages from requirements.txt
  3. Edit parameters if necessary (top of the script)
    1. Address
    2. Port
    3. frankfurter API address
  4. Run python exchange.rates.py
  5. Open Unitto
  6. Navigate to Settings and select About Unitto
  7. Tap Version name 7 times to open Advanced settings
  8. Select Currency exchange rates API and provide your alternative service address
  9. Save and restart the app