From 9e5343d924bfe06ece676f605f98664cc1ceadce Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Wed, 24 Mar 2021 16:15:14 +0300 Subject: [PATCH 01/12] Updated Gradle version --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index fe89ce1c..78aaf59c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,13 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.4.21' + ext.kotlin_version = '1.4.31' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.2' + classpath 'com.android.tools.build:gradle:4.1.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } From 59043296e678d7894d41bf695af658013849e991 Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Wed, 24 Mar 2021 16:16:18 +0300 Subject: [PATCH 02/12] Text updates --- app/src/main/res/values/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 04cfe06f..59b07afe 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -168,10 +168,10 @@ Today Yesterday - This week - This month - Last week - Last month + Current week + Current month + Previous week + Previous month Name Symbol Code @@ -814,8 +814,8 @@ Cannot transfer to the same account… - This and last week - This and last month + Current and previous week + Current and previous month Custom Original Amount From c30ab5e874e2ed7cac4ad9502d081de5a9480cbd Mon Sep 17 00:00:00 2001 From: Volodymyr Khmelovskyi Date: Tue, 29 Jun 2021 16:41:11 +0300 Subject: [PATCH 03/12] Added missed strings from original English file --- app/src/main/res/values-uk-rUA/strings.xml | 427 +++++++++++++++------ 1 file changed, 317 insertions(+), 110 deletions(-) diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml index b22f1321..13103b35 100644 --- a/app/src/main/res/values-uk-rUA/strings.xml +++ b/app/src/main/res/values-uk-rUA/strings.xml @@ -1,6 +1,5 @@ - - + Рахунки Журнал Валюти @@ -60,8 +59,10 @@ Використовувати копійки Проект Будь ласка, оберіть рахунок... - Будь ласка виберіть валюту... + Будь ласка, виберіть валюту... Будь ласка, оберіть категорію... + Будь ласка, оберіть одержувача... + Почніть друкувати… Будь ласка, виберіть проект... Увага Почніть зі створення рахунку. Натисніть на зелений \'+\' внизу... @@ -100,6 +101,12 @@ Без атрибутів Додати атрибут Новий атрибут + + Текст + Число + Список + Прапорець + Тип Назва Значення @@ -117,6 +124,8 @@ Перейти до маркера Нажміть на вказівник \"Моє місцезнаходження\" Примітка + Примітка містить + Містить \"%1$s\" Служба недоступна, будь ласка, спробуйте ще раз пізніше Визначити адресу Визначення адреси... @@ -133,6 +142,7 @@ Звіт за місцезнаходженням За проектами Звіт по проектам + По рахункам за період Звіт по рахункам за період часу По категоріям за період @@ -155,6 +165,7 @@ Не знайдені рахунки за вказаним фільтром. Не знайдені місцезнаходження за вказаним фільтром. Рахунок не вказаний + Сьогодні Вчора Цього тижня @@ -181,6 +192,11 @@ Цей запис Усі записи Ви редагуєте бюджет який повторюється, зміни торкнуться всіх повтореннь + + Банк + Готівка + Кредитка + Тип рахунку Емітент Готівка @@ -202,12 +218,37 @@ Інтерфейс користувача Сортування рахунків Порядок сортування рахунків у списку (вимагає перезапуску) + + За порядком сортування (зростання) + За порядком сортування (спадання) + За ім\'ям + За останньою транзакцією (зростання) + За останньою транзакцією (спадання) + Сортування розташувань Сортування для списку розташувань + + За ім\'ям + За частотою + Сортування шаблонів Порядок сортування списку шаблонів + + За датою створення + За ім\'ям + За аккаунтами + Сортування бюджетів Порядок сортування списку бюджетів + + За датою початку + За ім\'ям + За розміром + + + Від новіших до старіших + Від старіших до новіших + Більше продуктів... PIN-код захисту Поставте, щоб захистити запуск PIN-кодом @@ -228,6 +269,7 @@ Відновлення бази даних... Відновити з Google Drive Відновлення бази даних... + Відновлення бази даних... Базу даних успішно відновлено. Не можна підключитися до Google Диска. Резервну папку на Google Диску не знайдено. @@ -235,9 +277,11 @@ Вкажіть папку резервної копії Google Диску у налаштуваннях. Помилка надсилання файлу резервної копії Google Диску. Будь ласка, спробуйте ще раз. Помилка під час отримання файлу резервної копії. Будь ласка, спробуйте ще раз. + Помилка доступу до папки в Google Диску. Помилка, служба не доступна в Google Диску. Помилка підключення з Google Диском. + Успішно! %s Невдало... Дублювати @@ -245,6 +289,7 @@ Виберіть рахунок одержувач... Оновити баланс Закрити рахунок + Закрити рахунок? Перевідкрити рахунок Різниця Новий баланс @@ -319,9 +364,9 @@ Повторення Період Пн - Вівт + Вт Ср - Чет + Чт Пт Сб Нд @@ -342,6 +387,7 @@ Пароль облікового запису Google Резервна папка Для зберігання файлів резервної копії створити нову папку в Мій диск + Параметри звіту Основні налаштування звітів Налаштування для звітів за категоріями @@ -359,8 +405,23 @@ Останнє півріччя За останні 9 місяців За останній рік - Звітний період - Вкажіть період (к-ть місяців) для графиків у звіті + + 6 місяців тому + 3 місяці тому + Попередній місяць + Поточний місяць + Гаступний місяць + Через 3 місяці + Через 6 місяці + + Контрольний період + Визначте контрольний період (кількість місяців), який слід враховувати при відкритті діаграм звітів + + 3 місяці + 6 місяців + 9 місяців + 1 рік + Звітна валюта Вкажіть валюту для використання у звітах Останні $n місяців @@ -389,6 +450,7 @@ Жовтень Листопад Грудень + Інше Назва шаблону Шаблони @@ -448,15 +510,15 @@ Z Z-Z Z-Z-Z - ZZ - ZZ-Zz - Хр-Хр-Хр + Zz + Zz-Zz + Zz-Zz-Zz Зелений Синій Жовтий Червоний Рожевий - Звук:%s Вібрація:%s Світлодіод:%s + Звук:%s Вібрація:%s Світло:%s Нетиповий За замовчуванням Мелодія @@ -478,6 +540,7 @@ Показувати баланс на віджеті Прикріпити зображення Зробити знімок + Подяка Сортувати за назвою Сортувати все за назвою @@ -489,6 +552,7 @@ Розрахунковий день День, в який ви оплачуєте рахунок кредитної картки. День, в який здійснюють оплату + Розрахунковий день по виписці Звітний період Використовувати регулярний день оплати @@ -496,6 +560,7 @@ Неприпустиме значення. Вставте день оплати для звітного місяця. Вставте новий день розрахунку. Власний день розрахунку повинен відрізнятися від регулярного дня. + Виписка Виписка за місяць Виписка за кредитною карткою @@ -511,20 +576,20 @@ Платежі Різні надхождення Витрати - локалізація + Мова Встановіть мову інтерфейсу (потрібне перезавантаження!) + Введіть PIN Масові операції - UnionPay PayPal Використовувати фільтр для пошуку транзакцій Очистити все Узгодити все Видалити все - Выконати + Виконати Застосувати \'%s\' на %d транзакцію(й)? Не вибрано транзакцій… - Юридичні особи + Суб\'єкти Відновити Відновлені заплановані транзакції Відновлено %d пропущених транзакцій. Використовуйте масові операції для роботи з ними. @@ -539,24 +604,44 @@ За одержувача / Період Звіт по одержувачам транзакцій за період Без одержувачів + Без одержувачів Не знайдено одержувачів за вказаним фільтром у звіті. Зробити пожертву Android Маркет недоступний на вашому пристрої Тип + Експорт QIF Експортування даних до QIF... Усі рахунки Не знайдено... Порожній звіт День місяця + Відображати поточний баланс Показувати поточний баланс рахунку в Журналі (потрібен перезапуск) + + Альтернативний колір для парних та непарних рядочків журналу + Альтернативний колір для рядочків журналу + + Альтернативний колір для парних та непарних рядочків облікових записів + Альтернативний колір для рядочків облікових записів + Нова валюта... Час блокування Час утримання екрану активним перед його блокуванням + + Вимк. + 1 хвилина + 3 хвилини + 5 хвилин + 10 хвилин + 15 хвилин + + Формат дати Блокувати Нову Транзакцію\\Переказ Блокувати екрани \'Нову транзакцію\' та \'Новий переказ\' піном + [Розділити...] [Розділена транзакція] [Розділений переказ] @@ -564,12 +649,15 @@ Лишилася деяка нерозділена сума транзакції… Ця транзакція частина розділеної транзакції. Ви справді хочете видалити батьківську транзакцію? Отримання курсу обміну %s/%s ... + Завантажити курс валют з %s… + Сума Відкорегувати суму Рівномірно Поділити порівно Останній Коригувати останню + Додати переказ Ім\'я файла Оберіть рахунок @@ -578,22 +666,36 @@ Імпорт даних з CSV... Вибрати ім\'я файлу імпорту Не знайдено файл імпорту + Import file not found. Please try it without the prefix\n\'%1$s\' Невідома категорія файлу імпорту Невідомий проекту у файлі імпорту Неправильна валюта у файлі імпорту + Wrong currency in import file: %1$s\nPlease separate the different accounts into different files. Виняток невірного аргумента Помилка аналізу файлу імпорту Помилка імпорту CSV + Імпортувати QIF Імпортувати дані з QIF... Помилка імпорту QIF QIF файл було успішно імпортовано Імпорт/експорт *ПОПЕРЕДЖЕННЯ* Зверніть увагу, що всі існуючі дані будуть видалені! + + Google Диск + Включити синхронізацію з Google Диском + Синхронізація зображень з Диском + Вивантжувати зображення + Вивантжувати прикріплені зображеннядо Google Диску + Папка Google Диск + Виберіть папку Google Диску для збереження зображень + Остання категорія Запам\'ятати останню категорію для обраного одержувача (або рахунку, якщо поле одержувача вимкнене) + Формат символу Використовувати заголовку з файлу + Інформація Баланс Категорія переказу @@ -608,16 +710,21 @@ Новий Створити нову папку Не вдалося створити теку + Резервування бази даних Тека резервної копії Поточна тека резервних копій бази даних: %s + Надіслати резервну копію до… Надіслати резервну копію бази даних до… + Ліцензія + Швидке меню рахунків Увімкнути швидке меню у рахунках Швидке меню журналу Увімкнути швидке меню у журналі + Dropbox Авторизація Дозволити Financier вивантажувати файли на ваш Dropbox @@ -628,6 +735,10 @@ Вивантажувати автоматичні копії Вивантажувати автоматичні копії на Dropbox Вивантаження файлу на Dropbox… + Помилка при роботі з Dropbox + Не дозволено вивантажувати в Dropbox. Будь ласка перевірте Налаштування. + Завантаження файлів з Dropbox... + Курси валют Немає курсів валют Курс обміну @@ -635,15 +746,17 @@ До валюти Зробити типовою Будь ласка, встановіть валюту за замовчуванням, щоб отримати правильний Баланс (Меню - > Сутності - > Валюти) + Назад Виберіть - Селектор категорій - Ієрархічний селектор + Вибір категорій + Ієрархічний вибір Використовувати ієрархічний вибір категорій Підтвердити автоматично Підтвердити автоматично вибір дочірньої категорії Доходи/витрати Групувати категорії доходів і витрат разом + Загалом Усі рахунки %s Усі %s транзакції @@ -655,14 +768,19 @@ Н/Д Немає обмінного курсу на %s, щоб обчислити суму від %s до %s Немає обмінного курсу від %s до %s + Об\'єднати кнопки журналу Групувати разом кнопки Нова транзакція/Переказ/Шаблон (потрібний перезапуск) + Активний + Доходи/витрати Дохід Витрати Всього + Імпорт даних з CSV: %s%%... + Видалити старі транзакції Зробити резервну копію перед видаленням транзакцій Видалити транзакції до і включно по вказану дату. Баланси рахунків не зміняться. @@ -671,6 +789,7 @@ Попередній період Видалення старих транзакцій… Не вдається зробити резервну копію бази даних, переривання... + Дата останньої транзакції Показати дату останньої транзакції у списку рахунків (потрібний перезапуск) Список рахунків @@ -682,123 +801,211 @@ Переіндексувати Екран запуску Виберіть вкладку, яка буде обрана під час запуску + + Рахунки + Журнал + Бюджети + Звіти + + Поточні баланси не вірні, будь лааска, перейдіть Меню -> Більше -> Виправлення даних Виправлення даних Перевірка та виправлення за необхідності… + Не можна переказувати на один той же рахунок... - Цього і минулого тижня - Цього і минулого місяця + + Цього і попереднього тижня + Цього і попереднього місяця Власний + Початкова сума Валюта рахунку - Спліт перекази валютою, яка відрізняються від валюти рахунку, ще не підтримуються + Розділені перекази валютою, яка відрізняються від валюти рахунку, ще не підтримуються Показати валюту Показувати вибір валюти у екрані нової транзакції Дозволяти ввод десяткових знаків для валют Можливість ввести десяткові знаки для деякіх валют (центи, копійки і т.і.) Узгодити + + Переконайтеся, що файл в UTF-8 + + Показати \'Оплата кредитною карткою\' + Показувати прапорець для позначки платежів кредитної картки + Відкрити калькулятор + Відкрити калькулятор для транзакцій, створених із шаблону + + Заплановані операції можуть працювати НЕ так, як очікувалося, коли фінансир установлений на SD-карту. Будь ласка, перемістіть його на память телефону. + + Планувальник + + Завтра + Наступний тиждень + Це та наступний тиждень + Наступний місяць + Це та наступний місяць + Наступні 3 місяці + + Щось не так з постачальником валютних курсів. Відповідь від сервісу- %s + Постачальник курсів валют + Вибрати постачальника курсів валют для завантаження + OpenExchangeRates App ID + Зареєструйте безкоштовний акаунт на OpenExchangeRates і введіть ваш App ID + Завантажити всі курси + Завантажені курси валют + + Експорт розділень + + Усі %s рахунки + Збереження + Бюджет з метою заощадити гроші Вібрація Вібрація при натисканні кнопок PIN або калькулятора + Немає підключення до мережі, був використаний останні завантажені тарифи… + Одержувач переказу + Показувати поле одержувача під час нового Переказу Аккаунт для резервування Вибрати аккаунт Google Диску + Потрібен дозвіл + для рахунку %s + Будь ласка, авторизуйтесь Financier для доступу до Google Drive та спробуйте ще раз… + Завантаження файлів з Google Диску… + Будь ласка, вкажіть свій обліковий запис Google Диска в Налаштуваннях, потім спробуйте ще раз… + Резервне копіювання здійснено на Google Диск: %s + Відновлення бази даних з Диску Google… + З\'єднання встановлено. Будь ласка, спробуйте останню операцію ще раз… + Неможливо підключитися до Google Диска:\n%s + Не моливо вибрати обліковий запис Google для використання. Виглядає що ваш пристрій не підтримує сервіси Google Play. Доступ тільки на читання Дозволити доступ тільки на читання усіх файлів на Google Диску + Завантажити тестовий файл на Диск Google... Вивантажувати копії бази Вивантажувати копії бази на Google Диск Вивантажувати авт. копії Вивантажувати авт. копії бази на Google Диск - Постачальник курсів валют - Вибрати постачальника курсів валют для завантаження + Резевне копіювання/Відновлення Онлайн + Резервне копіювання Google Диска + Відновлення з Диску Google + Резервне копіювання Dropbox + Відновлення з Dropbox + Резервне копіювання бази даних… - - Текст - Номер - Список - Прапорець - - - Банк - Готівка - Кредитка - - - За порядком сортування (зростання) - За порядком сортування (спадання) - За ім\'ям - За останньою транзакцією (зростання) - За останньою транзакцією (спадання) - - - За ім\'ям - За частотою - - - За датою створення - За ім\'ям - За аккаунтами - - - За датою початку - За ім\'ям - За розміром - - - Від новіших до старіших - Від старіших до новіших - - - 6 місяців тому - 3 місяці тому - Минулого місяця - Цього місяця - Наступного місяця - Наступні 3 місяці - Наступні 6 місяців - - - 3 місяці - 6 місяців - 9 місяців - 1 рік - - - Викл. - 1 хвилина - 3 хвилини - 5 хвилин - 10 хвилин - 15 хвилин - - - Рахунки - Журнал - Бюджети - Звіти - - Випущено під ліцензією GNU GPL v2 - Дізнатися інформацію про проект - Усі %s аккаунти + Financier вимагає кілька дозволів наданих вручну. + Надайте дозвіл нижче, а потім поверніться до попереднього екрану і повторіть операцію. Дозволи можна відкликати у системних налаштуваннях -> Дозволи для додатків. + Сховище + Потрібно для зчитувати та записувати файли резервних копій із/до зовнішнього сховища. + Камера + Потрібно для робити з зображеннями і додаванням їх до транзакцій. + Контакти + Потрібно для резервного копіювання в особистий Диск Google. + Дозволи надані. + Дозвіл не надано + SMS + Потрібно для додавання нових операцій автоматично по шаблонах SMS. + Політика конфіденційності + + Показати меню + Показувати кнопку меню на екрані Облікові записи + + + Номер SMS + Фільтрувати за номером або текстом + Номер відправника SMS або ім\'я + Шаблони SMS + Шаблон (?) + Заповнювачі: \n{{p}} - ціна\n{{a}} - цифри останнього облікового запису\n{{*}} - будь які символи/слова + Вкажіть шаблон із заповнювачами + Спробуй приклад SMS тут + Шаблони SMS + Немає шаблонів SMS + Додати шаблон SMS + Новий шаблон SMS + Сортувати за іменем + Шаблон SMS продубльовано + Видалити цей шаблон SMS? + Нова операція додана SMS з %s + Операція SMS з %s + Виберіть тип та обліковий запис (опціонально) + SMS + Статус транзакції + Статус транзакції з SMS: %s + Збереження тексту SMS + Додати текст SMS до нотатки транзакції + + За замовчуванням + Mir + Тип оплати Електронний - Створення резервної копії бази даних… - Немає дозволу для завантаження на Dropbox. Будь ласка перевірте ваші налаштування. - Запит дозволу - для аккаунту %s - Будь ласка дозвольте Financier доступ до вашого Google Диску та спробуйте ще раз… - Заплановані транзакції можуть працювати не так як очікується якщо Financier встановлений на карту пам\'яті. Будь ласка перенесіть додаток до внутрішньої пам\'яті телефону. - Будь ласка зареєструйте безкоштовний аккаунт в сервісі OpenExchangeRates та введіть ваш App ID - Яндекс.Деньги - Коментар містить текст - Містить %1$s - Закрити рахунок? - Немає одержувачів - Завантаження обмінного курсу для %s… - Увімкнути синхронізацію з Google Диском - Завантажувати зображення - Папка на Google Диску - Помилка при підключенні до Dropbox - Завантаження файлів з Dropbox… - Автоматично встановлювати фокус у поле введення суми для нових транзакцій - Встановлювати фокус в поле суми + Видалити обліковий запис + + Змінити налаштування програми + Зміна категорій, платежів, проектів, місцезнаходжень, тощо + Розклад транзакцій та переказів + Резервне копіювання бази даних на локальне сховище + Відновлення бази даних з локального сховища + Резервне копіювання бази даних на Диск Google + Відновлення бази даних з Диску Google + Зберегти базу даних в Dropbox + Відновити базу даних з Dropbox + Надсилати резервну копію бази даних на електронну пошту і т. д + Імпорт/експорт бази даних в інший формат на csv, qif, тощо + Застосувати операції для кількох транзакцій + Переглянути місячне планування + Виправити внутрішні проблеми, якщо необхідно + Зробити добровільну пожертву для підтримки проекту + Отримати більш детальну інформацію про проект + + Будь ласка, не забудьте PIN. Немає способу відновити вашу інформацію або вимкнути захист, якщо ви втратите або забудете PIN. + + Нагадувати про резервне копіювання + Нагадувати, якщо авто резервуваня невідбулось протягом декількох днів. + Сповіщати про проблеми + Сповіщати, якщо авто резервне копіювання не вдалося під час останнього виконання. + Ви повинні розглянути можливість увімкнення автотоматичного резервування до Google Drive або Dropbox, щоб зберегти ваші дані. Відкрийте меню -> Налаштування -> резервне копіювання. + %s%n(Натисніть, щоб відхилити це повідомлення) + Помилка автоматичоно резервування при %s з помилкою [%s]. + + Дозвіл на запис до зовнішнього накопичувача не надано + Дозволи + Переглянути права доступу, які потрібно надати вручну + + Сканер відбитків + Використовувати відбиток пальця для розблокування додатку + Резервне копіювання до PIN-коду + Дозволити використовувати PIN-код для розблокування програми, навіть якщо ввімкнено відбиток пальця. + Для продовження, підтвердіть відбиток пальця + Торкніться сенсора + Відбиток розпізнано + Відбиток пальця не розпізнано. Повторіть спробу + Помилка! + Сенсор відбитків пальців не виявлено + Потрібно ввести як мінімум один відбиток пальця + Цей пристрій не підтримується. + Не доступно: %s + + Камера + Зображення + Використовувати PIN + Встановити фокус на полі Сума + Автоматично фокусуватися на полі суми для нових транзакцій + Неактивний + + Виберіть об\'єкт + Вибір категорії + Вибір одержувача + Вибір місцезнаходження + Вибір проєкту + Показати список або фільтр + + Не вдалося знайти %s з заголовком \"%s\"? Створити новий, якщо відсутній? + Не вдалося знайти наявну категорію з заголовком \"%s\"? Будь ласка, створіть нову, використовуючи кнопку + на селекторі категорій. + Показати все + Тип шаблону… + + + Показати фільтри + Показати список + + From d32a4faa55d267b7b2630e33d1cff6eaff974642 Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Fri, 23 Jul 2021 11:59:02 +0300 Subject: [PATCH 04/12] Fix crash when cancelling from Category creation --- .../com/handydev/financier/activity/MyEntitySelector.kt | 4 ++-- .../handydev/financier/fragments/BudgetListFragment.kt | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/handydev/financier/activity/MyEntitySelector.kt b/app/src/main/java/com/handydev/financier/activity/MyEntitySelector.kt index ae91f0ab..3678cc30 100644 --- a/app/src/main/java/com/handydev/financier/activity/MyEntitySelector.kt +++ b/app/src/main/java/com/handydev/financier/activity/MyEntitySelector.kt @@ -219,8 +219,8 @@ abstract class MyEntitySelector internal co } } - fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { - if (resultCode == Activity.RESULT_OK && requestCode == actBtnId) { + fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + if (resultCode == Activity.RESULT_OK && requestCode == actBtnId && data != null) { onNewEntity(data) } } diff --git a/app/src/main/java/com/handydev/financier/fragments/BudgetListFragment.kt b/app/src/main/java/com/handydev/financier/fragments/BudgetListFragment.kt index 167e706d..c1dbbd37 100644 --- a/app/src/main/java/com/handydev/financier/fragments/BudgetListFragment.kt +++ b/app/src/main/java/com/handydev/financier/fragments/BudgetListFragment.kt @@ -50,9 +50,9 @@ class BudgetListFragment: AbstractListFragment(R.layout.budget_list) { override fun internalOnCreate(savedInstanceState: Bundle?) { super.internalOnCreate(savedInstanceState) val totalText = view?.findViewById(R.id.total) - totalText?.setOnClickListener { view: View? -> showTotals() } - bFilter = view?.findViewById(R.id.bFilter) - bFilter!!.setOnClickListener { v: View? -> + totalText?.setOnClickListener { showTotals() } + bFilter = view?.findViewById(R.id.bFilter) + bFilter!!.setOnClickListener { val intent = Intent(activity!!, DateFilterActivity::class.java) filter.toIntent(intent) startActivityForResult(intent, FILTER_BUDGET_REQUEST) @@ -183,7 +183,7 @@ class BudgetListFragment: AbstractListFragment(R.layout.budget_list) { val recur = RecurUtils.createFromExtraString(b.recur) AlertDialog.Builder(activity!!) .setMessage(if (recur.interval === RecurInterval.NO_RECUR) R.string.delete_budget_confirm else R.string.delete_budget_recurring_confirm) - .setPositiveButton(R.string.yes) { arg0, arg1 -> + .setPositiveButton(R.string.yes) { _, _ -> db!!.deleteBudget(id) recreateCursor() } From 1817222b10e5dc29923db139efb9f0e6495f4bf7 Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Fri, 23 Jul 2021 11:59:10 +0300 Subject: [PATCH 05/12] Gradle wrapper updated --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 78aaf59c..1874e003 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.3' + classpath 'com.android.tools.build:gradle:4.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f3633248..102b2a13 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip From 6f2258f8cd39619fc2ed1aea8c9c04926234ebe8 Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Fri, 23 Jul 2021 12:16:28 +0300 Subject: [PATCH 06/12] Upgrade more dependencies --- app/build.gradle | 32 +++++++++++++++----------------- build.gradle | 8 +++++--- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5af2e8a1..f3c54c6a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,6 @@ repositories { google() - jcenter() + mavenCentral() maven { url 'https://jitpack.io' } } @@ -12,10 +12,8 @@ apply plugin: 'kotlin-kapt' android { buildFeatures { dataBinding true - // viewBinding true } compileSdkVersion 30 - buildToolsVersion '29.0.3' flavorDimensions "channel" productFlavors { @@ -114,25 +112,25 @@ def eventbus_version = '3.2.0' dependencies { implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.multidex:multidex:2.0.1' implementation "androidx.constraintlayout:constraintlayout:2.0.4" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" implementation "androidx.viewpager2:viewpager2:1.0.0" - kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" + implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" //googledrive googleplayImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' googleplayImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' - googleplayImplementation 'com.google.android.gms:play-services-auth:19.0.0' + googleplayImplementation 'com.google.android.gms:play-services-auth:19.2.0' googleplayImplementation 'com.google.http-client:google-http-client-gson:1.26.0' googleplayImplementation 'com.google.api-client:google-api-client-android:1.26.0' googleplayImplementation 'com.google.apis:google-api-services-drive:v3-rev136-1.25.0' //googledrive misc - googleplayImplementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0-rc1' + googleplayImplementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1' googleplayImplementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' - googleplayImplementation ('androidx.work:work-runtime-ktx:2.4.0'){ + googleplayImplementation ('androidx.work:work-runtime-ktx:2.5.0'){ //Needed due to a transitive dependency clash with the google api client dep exclude group: 'com.google.guava', module:'listenablefuture' } @@ -141,14 +139,14 @@ dependencies { //untied - SAME AS ABOVE untiedImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' untiedImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' - untiedImplementation 'com.google.android.gms:play-services-auth:19.0.0' + untiedImplementation 'com.google.android.gms:play-services-auth:19.2.0' untiedImplementation 'com.google.http-client:google-http-client-gson:1.26.0' untiedImplementation 'com.google.api-client:google-api-client-android:1.26.0' untiedImplementation 'com.google.apis:google-api-services-drive:v3-rev136-1.25.0' //googledrive misc - untiedImplementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0-rc01' + untiedImplementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1' untiedImplementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' - untiedImplementation ('androidx.work:work-runtime-ktx:2.4.0'){ + untiedImplementation ('androidx.work:work-runtime-ktx:2.5.0'){ //Needed due to a transitive dependency clash with the google api client dep exclude group: 'com.google.guava', module:'listenablefuture' } @@ -162,26 +160,26 @@ dependencies { implementation 'net.sf.trove4j:trove4j:3.0.3' implementation 'com.dropbox.core:dropbox-core-sdk:3.1.3' - implementation 'com.squareup.okhttp3:okhttp:3.14.9' - implementation 'com.squareup.okio:okio:1.17.5' + implementation 'com.squareup.okhttp3:okhttp:4.9.1' + implementation 'com.squareup.okio:okio:2.8.0' implementation "org.greenrobot:eventbus:$eventbus_version" kapt "org.greenrobot:eventbus-annotation-processor:$eventbus_version" implementation 'com.wdullaer:materialdatetimepicker:3.6.4' - implementation 'commons-io:commons-io:2.5' + implementation 'commons-io:commons-io:2.6' implementation 'com.mtramin:rxfingerprint:2.2.1' implementation 'io.reactivex.rxjava2:rxjava:2.2.19' implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' implementation 'org.reactivestreams:reactive-streams:1.0.3' implementation 'com.mlsdev.rximagepicker:library:2.1.5' implementation 'com.github.bumptech.glide:glide:4.11.0' - implementation 'com.google.android.material:material:1.2.1' + implementation 'com.google.android.material:material:1.4.0' implementation fileTree(include: '**/*.jar', dir: 'libs') testImplementation 'junit:junit:4.13.1' - testImplementation 'androidx.test:core:1.3.0' + testImplementation 'androidx.test:core:1.4.0' testImplementation 'org.robolectric:robolectric:4.4' - implementation "androidx.core:core-ktx:+" + implementation "androidx.core:core-ktx:1.6.0" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } diff --git a/build.gradle b/build.gradle index 1874e003..f02a34ef 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,11 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.4.31' + ext.kotlin_version = '1.5.21' repositories { google() jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:4.2.2' @@ -12,14 +13,15 @@ buildscript { } ext { - lifecycle_version = "2.2.0" + lifecycle_version = "2.3.1" } } allprojects { repositories { - jcenter() google() + jcenter() + mavenCentral() } } From 9d90c6e51b0c0b79d3ffabac0399d0d79eb1c6b3 Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Fri, 23 Jul 2021 13:13:07 +0300 Subject: [PATCH 07/12] Fix Backup not working on Android 11+ --- app/src/main/AndroidManifest.xml | 2 +- .../financier/activity/RequestPermission.java | 10 ++++ .../activity/RequestPermissionActivity.java | 57 +++++++++++++++++-- 3 files changed, 63 insertions(+), 6 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6b2daa05..cc40d8a4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,7 +19,7 @@ android:normalScreens="true" android:resizeable="true" android:smallScreens="true" /> - + diff --git a/app/src/main/java/com/handydev/financier/activity/RequestPermission.java b/app/src/main/java/com/handydev/financier/activity/RequestPermission.java index 07855b75..e58586e3 100644 --- a/app/src/main/java/com/handydev/financier/activity/RequestPermission.java +++ b/app/src/main/java/com/handydev/financier/activity/RequestPermission.java @@ -1,9 +1,14 @@ package com.handydev.financier.activity; +import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; +import android.os.Environment; + import androidx.core.content.ContextCompat; +import static android.os.Build.VERSION.SDK_INT; + public class RequestPermission { public static boolean isRequestingPermission(Context context, String permission) { @@ -15,6 +20,11 @@ public static boolean isRequestingPermission(Context context, String permission) } public static boolean checkPermission(Context ctx, String permission) { + if(SDK_INT >= 30) { + if(permission.equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { + return Environment.isExternalStorageManager(); + } + } return ContextCompat.checkSelfPermission(ctx, permission) == PackageManager.PERMISSION_GRANTED; } diff --git a/app/src/main/java/com/handydev/financier/activity/RequestPermissionActivity.java b/app/src/main/java/com/handydev/financier/activity/RequestPermissionActivity.java index 01ac6dac..49388007 100644 --- a/app/src/main/java/com/handydev/financier/activity/RequestPermissionActivity.java +++ b/app/src/main/java/com/handydev/financier/activity/RequestPermissionActivity.java @@ -1,14 +1,24 @@ package com.handydev.financier.activity; import android.Manifest; +import android.app.Activity; import android.content.Context; +import android.content.Intent; import android.content.pm.PackageManager; + +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.appcompat.widget.SwitchCompat; +import android.net.Uri; +import android.os.Bundle; +import android.os.Environment; import android.view.View; import android.view.ViewGroup; import android.widget.CompoundButton; @@ -23,6 +33,9 @@ import com.handydev.financier.R; import com.handydev.financier.utils.MyPreferences; +import static android.os.Build.VERSION.SDK_INT; +import static android.provider.Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION; + @EActivity(R.layout.activity_request_permissions) public class RequestPermissionActivity extends AppCompatActivity { @@ -53,11 +66,28 @@ public class RequestPermissionActivity extends AppCompatActivity { @ViewById(R.id.toggleSms) SwitchCompat toggleSms; + ActivityResultLauncher activityResultLauncher; + @Override protected void attachBaseContext(Context base) { super.attachBaseContext(MyPreferences.switchLocale(base)); } + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if(SDK_INT >= 30) { + activityResultLauncher = registerForActivityResult( + new ActivityResultContracts.StartActivityForResult(), + new ActivityResultCallback() { + @Override + public void onActivityResult(ActivityResult result) { + checkAllFilesPermission(); + } + }); + } + } + @AfterViews public void initViews() { checkPermissions(); @@ -66,8 +96,16 @@ public void initViews() { } } + private void checkAllFilesPermission() { + enableToggle(!Environment.isExternalStorageManager(), toggleWriteStorage, toggleWriteStorageWrap); + } + private void checkPermissions() { - disableToggleIfGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE, toggleWriteStorage, toggleWriteStorageWrap); + if(SDK_INT >= 30) { + checkAllFilesPermission(); + } else { + disableToggleIfGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE, toggleWriteStorage, toggleWriteStorageWrap); + } disableToggleIfGranted(Manifest.permission.GET_ACCOUNTS, toggleGetAccounts, toggleGetAccountsWrap); disableToggleIfGranted(Manifest.permission.CAMERA, toggleCamera, toggleCameraWrap); if(!BuildConfig.FLAVOR.equals("googleplay")) { @@ -77,17 +115,26 @@ private void checkPermissions() { private void disableToggleIfGranted(String permission, CompoundButton toggleButton, ViewGroup wrapLayout) { if (isGranted(permission)) { - toggleButton.setChecked(true); - toggleButton.setEnabled(false); - wrapLayout.setBackgroundResource(0); + enableToggle(false, toggleButton, wrapLayout); } else if (permission.equals(requestedPermission)) { wrapLayout.setBackgroundResource(R.drawable.highlight_border); } } + private void enableToggle(Boolean enable, CompoundButton toggleButton, ViewGroup wrapLayout) { + toggleButton.setChecked(!enable); + toggleButton.setEnabled(enable); + wrapLayout.setBackgroundResource(0); + } + @Click(R.id.toggleWriteStorage) public void onGrantWriteStorage() { - requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, toggleWriteStorage); + if(SDK_INT >= 30){ + Intent intent = new Intent(ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, Uri.parse("package:" + BuildConfig.APPLICATION_ID)); + activityResultLauncher.launch(intent); + } else { + requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, toggleWriteStorage); + } } @Click(R.id.toggleGetAccounts) From 8e59b58dc840109daa3404cbe98d857317bd2382 Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Fri, 23 Jul 2021 14:28:41 +0300 Subject: [PATCH 08/12] Fix duplicated categories --- .../java/com/handydev/financier/db/DatabaseAdapter.kt | 9 --------- .../main/java/com/handydev/financier/model/Category.kt | 1 - .../java/com/handydev/financier/model/CategoryEntity.kt | 3 +++ .../java/com/handydev/financier/model/CategoryTree.kt | 3 --- 4 files changed, 3 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/handydev/financier/db/DatabaseAdapter.kt b/app/src/main/java/com/handydev/financier/db/DatabaseAdapter.kt index 119b226a..dc3a543b 100644 --- a/app/src/main/java/com/handydev/financier/db/DatabaseAdapter.kt +++ b/app/src/main/java/com/handydev/financier/db/DatabaseAdapter.kt @@ -630,15 +630,6 @@ open class DatabaseAdapter(context: Context?) : MyEntityManager(context) { } } return CategoryTree.createFromCache(categories) - /*val c: Cursor = when { - excludingTreeId > 0 -> { - getCategoriesWithoutSubtree(excludingTreeId, includeNoCategory) - } - else -> { - getCategories(includeNoCategory) - } - } - return CategoryTree.createFromCursor(c) { obj: Cursor? -> formCursor(c) }*/ } fun getCategoriesTree(includeNoCategory: Boolean): CategoryTree { diff --git a/app/src/main/java/com/handydev/financier/model/Category.kt b/app/src/main/java/com/handydev/financier/model/Category.kt index cdd11217..cd94cdd7 100644 --- a/app/src/main/java/com/handydev/financier/model/Category.kt +++ b/app/src/main/java/com/handydev/financier/model/Category.kt @@ -12,7 +12,6 @@ package com.handydev.financier.model import android.database.Cursor import com.handydev.financier.db.CategoriesCache -import com.handydev.financier.db.DatabaseAdapter import com.handydev.financier.db.DatabaseHelper.CategoryViewColumns import javax.persistence.Column import javax.persistence.Entity diff --git a/app/src/main/java/com/handydev/financier/model/CategoryEntity.kt b/app/src/main/java/com/handydev/financier/model/CategoryEntity.kt index 8e3209d8..dd630ab9 100644 --- a/app/src/main/java/com/handydev/financier/model/CategoryEntity.kt +++ b/app/src/main/java/com/handydev/financier/model/CategoryEntity.kt @@ -40,6 +40,9 @@ open class CategoryEntity> : MyEntity() { if (children == null) { children = CategoryTree() } + if(children?.any { it.id == category.id } == true) { + return + } category.parent = this as T category.type = type children!!.add(category) diff --git a/app/src/main/java/com/handydev/financier/model/CategoryTree.kt b/app/src/main/java/com/handydev/financier/model/CategoryTree.kt index 811dfe3a..9669f348 100644 --- a/app/src/main/java/com/handydev/financier/model/CategoryTree.kt +++ b/app/src/main/java/com/handydev/financier/model/CategoryTree.kt @@ -220,9 +220,6 @@ class CategoryTree> : Iterable { if(category.title == Category.noCategory().title) { return } - if(level > 10) { - Log.d("f", "f") - } addCategoryIfNeeded(category, parent) var children = categoriesList.filter { it.left >= category.left && it.right <= category.right && it.id != category.id } for(child in children) { From e9c93a1dc5f3ac38b449a28873b97f8b008c19f0 Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Fri, 23 Jul 2021 16:52:50 +0300 Subject: [PATCH 09/12] Release notes --- app/src/main/assets/whatsnew.htm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/assets/whatsnew.htm b/app/src/main/assets/whatsnew.htm index 63ab1fb2..6e4c054d 100644 --- a/app/src/main/assets/whatsnew.htm +++ b/app/src/main/assets/whatsnew.htm @@ -17,6 +17,15 @@ +

2.0.16

+

+ [*]Crash fixed when going back from Add Category screen.
+ [*]Duplicate categories in Category selector fixed.
+ [*]Fix Backup not working on Android 11.
+ [*]Ukrainian locale improved.
+ [*]Updated third party libraries.
+

+

2.0.15

[*]Crash fixed.
From 12f55e5554420551768c750f91b90cda907aff6d Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Fri, 23 Jul 2021 16:53:04 +0300 Subject: [PATCH 10/12] Build warnings fixed --- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values-ru/strings.xml | 6 +++--- app/src/main/res/values-uk-rUA/strings.xml | 8 ++++---- app/src/main/res/values/strings.xml | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b982eb55..6c75c802 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1,6 +1,6 @@ - + Konten Protokoll Währungen diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 228de351..93dafc9a 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -855,8 +855,8 @@ Уведомлять о проблемах Уведомлять если авто-бэкап не завершился успешно. Включите автоматическое резервное копирование на Google Диск или Dropbox, чтобы обеспечить сохранность ваших данных. Перейдите в Меню -> Настройки -> Резервная копия базы. - %s%n(Нажмите чтобы убрать это сообщение) - Авто-бэкап завершился в %s с ошибкой [%s]. + %s (Нажмите чтобы убрать это сообщение) + Авто-бэкап завершился в %1$s с ошибкой [%2$s]. Разрешение Читать/Писать Внешний Носитель не выдано Разрешения @@ -942,7 +942,7 @@ Список - %s: не удалось найти \"%s\"? Создать новую сущность? + %1$s: не удалось найти \"%2$s\"? Создать новую сущность? Категория: не удалось найти \"%s\"? Создайте новую категорию нажав кнопку +. Список diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml index 13103b35..64f54f2a 100644 --- a/app/src/main/res/values-uk-rUA/strings.xml +++ b/app/src/main/res/values-uk-rUA/strings.xml @@ -1,5 +1,5 @@ - + Рахунки Журнал Валюти @@ -963,8 +963,8 @@ Сповіщати про проблеми Сповіщати, якщо авто резервне копіювання не вдалося під час останнього виконання. Ви повинні розглянути можливість увімкнення автотоматичного резервування до Google Drive або Dropbox, щоб зберегти ваші дані. Відкрийте меню -> Налаштування -> резервне копіювання. - %s%n(Натисніть, щоб відхилити це повідомлення) - Помилка автоматичоно резервування при %s з помилкою [%s]. + %s (Натисніть, щоб відхилити це повідомлення) + Помилка автоматичоно резервування при %1$s з помилкою [%2$s]. Дозвіл на запис до зовнішнього накопичувача не надано Дозволи @@ -998,7 +998,7 @@ Вибір проєкту Показати список або фільтр - Не вдалося знайти %s з заголовком \"%s\"? Створити новий, якщо відсутній? + Не вдалося знайти %1$s з заголовком \"%2$s\"? Створити новий, якщо відсутній? Не вдалося знайти наявну категорію з заголовком \"%s\"? Будь ласка, створіть нову, використовуючи кнопку + на селекторі категорій. Показати все Тип шаблону… diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 59b07afe..6b7514c1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - + Accounts Blotter Currencies @@ -963,8 +963,8 @@ Notify about failures Notify if autobackup failed during the last execution. You should consider enabling autobackup to Google Drive or Dropbox to keep your data safe. Go to Menu -> Preferences -> Backup. - %s%n(Tap to dismiss this message) - Autobackup failed at %s with error [%s]. + %s (Tap to dismiss this message) + Autobackup failed at %1$s with error [%2$s]. Write external storage permisson not granted Permissions @@ -998,7 +998,7 @@ Project selector Show list or filter on tap - Not able to find %s with title \"%s\"? Create a new one if missing? + Not able to find %1$s with title \"%2$s\"? Create a new one if missing? Not able to find existing Category with title \"%s\"? Please create a new one using the + button on the category selector. List all Type template… From 59ac9849f0671e3bfbf42f796398e47c9e20781a Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Fri, 23 Jul 2021 16:53:12 +0300 Subject: [PATCH 11/12] Version # --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f3c54c6a..8ee093c5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,8 +32,8 @@ android { applicationId "com.handydev.financier" minSdkVersion 21 targetSdkVersion 30 - versionCode 215 - versionName "2.0.15" + versionCode 216 + versionName "2.0.16" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true javaCompileOptions { From 42e70d962d0b3d2823b38d4bcd1976c615f85a1c Mon Sep 17 00:00:00 2001 From: Mikhail Barashkov Date: Fri, 23 Jul 2021 17:19:29 +0300 Subject: [PATCH 12/12] For now, "solve" the Android 11 storage permission problem with a workaround of target SDK 29 --- app/build.gradle | 17 ++++++++++++++++- .../financier/activity/RequestPermission.java | 4 ++-- .../activity/RequestPermissionActivity.java | 18 +++++++++--------- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8ee093c5..79a0eb37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,6 +9,11 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' +def financierPropertiesFile = rootProject.file("./Keys/financier.properties") +def financierProperties = new Properties() + +financierProperties.load(new FileInputStream(financierPropertiesFile)) + android { buildFeatures { dataBinding true @@ -28,10 +33,19 @@ android { } } + signingConfigs { + release { + storeFile file(financierProperties['storeFile']) + storePassword financierProperties['storePassword'] + keyAlias financierProperties['keyAlias'] + keyPassword financierProperties['keyPassword'] + } + } + defaultConfig { applicationId "com.handydev.financier" minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 29 versionCode 216 versionName "2.0.16" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -48,6 +62,7 @@ android { buildTypes { release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' applicationVariants.all { variant -> variant.outputs.all { output -> diff --git a/app/src/main/java/com/handydev/financier/activity/RequestPermission.java b/app/src/main/java/com/handydev/financier/activity/RequestPermission.java index e58586e3..5ceb4c66 100644 --- a/app/src/main/java/com/handydev/financier/activity/RequestPermission.java +++ b/app/src/main/java/com/handydev/financier/activity/RequestPermission.java @@ -20,11 +20,11 @@ public static boolean isRequestingPermission(Context context, String permission) } public static boolean checkPermission(Context ctx, String permission) { - if(SDK_INT >= 30) { + /*if(SDK_INT >= 30) { if(permission.equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { return Environment.isExternalStorageManager(); } - } + }*/ return ContextCompat.checkSelfPermission(ctx, permission) == PackageManager.PERMISSION_GRANTED; } diff --git a/app/src/main/java/com/handydev/financier/activity/RequestPermissionActivity.java b/app/src/main/java/com/handydev/financier/activity/RequestPermissionActivity.java index 49388007..d2f23254 100644 --- a/app/src/main/java/com/handydev/financier/activity/RequestPermissionActivity.java +++ b/app/src/main/java/com/handydev/financier/activity/RequestPermissionActivity.java @@ -73,7 +73,7 @@ protected void attachBaseContext(Context base) { super.attachBaseContext(MyPreferences.switchLocale(base)); } - @Override + /* @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(SDK_INT >= 30) { @@ -86,7 +86,7 @@ public void onActivityResult(ActivityResult result) { } }); } - } + }*/ @AfterViews public void initViews() { @@ -101,11 +101,11 @@ private void checkAllFilesPermission() { } private void checkPermissions() { - if(SDK_INT >= 30) { - checkAllFilesPermission(); - } else { + //if(SDK_INT >= 30) { + // checkAllFilesPermission(); + //} else { disableToggleIfGranted(Manifest.permission.WRITE_EXTERNAL_STORAGE, toggleWriteStorage, toggleWriteStorageWrap); - } + //} disableToggleIfGranted(Manifest.permission.GET_ACCOUNTS, toggleGetAccounts, toggleGetAccountsWrap); disableToggleIfGranted(Manifest.permission.CAMERA, toggleCamera, toggleCameraWrap); if(!BuildConfig.FLAVOR.equals("googleplay")) { @@ -129,12 +129,12 @@ private void enableToggle(Boolean enable, CompoundButton toggleButton, ViewGroup @Click(R.id.toggleWriteStorage) public void onGrantWriteStorage() { - if(SDK_INT >= 30){ + /*if(SDK_INT >= 30){ Intent intent = new Intent(ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, Uri.parse("package:" + BuildConfig.APPLICATION_ID)); activityResultLauncher.launch(intent); - } else { + } else {*/ requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, toggleWriteStorage); - } + //} } @Click(R.id.toggleGetAccounts)