Skip to content

Repository files navigation

Gentleman

Этот джентльмен был известен своей изысканной вежливостью и непревзойденной учтивостью. Его запросы о разрешениях всегда сопровождались глубоким уважением и тактом, он не просто спрашивал, но и проявлял искренний интерес к мнению других. Его выразительные иконки и стили текста, сопровождающие любое обращение, создавали приятную атмосферу, будь то отправка уведомлений или доступ к геолокации.


  • Простой и элегантный dsl синтаксис
  • Запрос одного или нескольких разрешений
  • Получение результата в виде коллбэка
  • Полная кастомизация интерфейса
  • Различные стратегии использования

Sample

Использование

Подключение зависимости

project build.gradle.kts

repositories {
    maven("https://jitpack.io")
}

module build.gradle.kts

implementation("com.github.FabitMobile.gentleman:$latestVersion")

В удобном месте описываем необходимые разрешения и обработчик результата. Context подойдет любой

Gentleman in Tuxedo {
    with(context)
    ask(Manifest.permission.ACCESS_COARSE_LOCATION)
    await { result ->
        println("granted=${result.granted}; denied=${result.denied}")
    }
}

Для запроса нескольких разрешений сразу, указываем их через запятую или в виде списка

Не забываем, что после Adnroid 11 разрешения не запрашиваются, если были отклонены дважды

Стратегии запросов

Перезапрос при отклонении

ask(Manifest.permission.ACCESS_COARSE_LOCATION) retry once

Показ Rationale

  • Всегда показывать перед запросом
gentle manner ask(Manifest.permission.ACCESS_COARSE_LOCATION)
  • Показывать при необходимости (поведение по-умолчанию)
usual manner ask(Manifest.permission.ACCESS_COARSE_LOCATION)
  • Никогда не показывать
rude manner ask(Manifest.permission.ACCESS_COARSE_LOCATION)

Невозможность запросить разрешение

  • Открывает дополнительную разметку, предлагающую перейти в настройки
suggest goTo innerChamber

Внешний вид

Для кастомизации интерфейса необходимо переопределить класс GentlemanAppearance - подготовительный этап, который далее передается в Appearance

class Tuxedo(
    override val rationaleLayoutResId: Int = R.layout.tuxedo,
    override val settingLayoutResId: Int = R.layout.inner_chamber,
    override val appearanceClass: Class<out Appearance> = Appearance::class.java,
    reparation: Preparation,
) : GentlemanAppearance(reparation)

Appearance - это полноценная activity в которой вы вольны делать что угодно. Необходимо только использовать специальные id (button_positive и button_negative) для view для обработки нажатий соответствующих кнопок

Иногда достаточно будет переопределить только саму разметку R.layout.tuxedo

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages