├── demo ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── ic_launcher_background.xml │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── layout │ │ │ └── activity_main.xml │ │ └── drawable │ │ │ └── ic_launcher_foreground.xml │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── com │ │ └── innfinity │ │ └── permissionflow │ │ └── MainActivity.kt └── build.gradle.kts ├── permissionflow ├── .gitignore ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── com │ │ └── innfinity │ │ └── permissionflow │ │ └── lib │ │ ├── Permission.kt │ │ ├── PermissionFragment.kt │ │ └── PermissionFlow.kt └── build.gradle.kts ├── Images └── coffee.jpeg ├── permission-compose ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── com │ │ └── innfinity │ │ └── compose │ │ └── permissions │ │ └── PermissionState.kt └── build.gradle.kts ├── settings.gradle ├── .gitignore ├── gradle.properties ├── gradle └── libs.versions.toml ├── README.md └── LICENSE /demo/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /permissionflow/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /permissionflow/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Images/coffee.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robertlevonyan/permissions-flow/HEAD/Images/coffee.jpeg -------------------------------------------------------------------------------- /permission-compose/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /demo/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | PermissionFlow 3 | 4 | -------------------------------------------------------------------------------- /demo/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robertlevonyan/permissions-flow/HEAD/demo/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robertlevonyan/permissions-flow/HEAD/demo/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robertlevonyan/permissions-flow/HEAD/demo/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robertlevonyan/permissions-flow/HEAD/demo/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robertlevonyan/permissions-flow/HEAD/demo/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /demo/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robertlevonyan/permissions-flow/HEAD/demo/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /demo/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robertlevonyan/permissions-flow/HEAD/demo/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /demo/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robertlevonyan/permissions-flow/HEAD/demo/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /demo/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robertlevonyan/permissions-flow/HEAD/demo/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /demo/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robertlevonyan/permissions-flow/HEAD/demo/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /demo/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #F1F1F1 4 | -------------------------------------------------------------------------------- /demo/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #6200EE 4 | #3700B3 5 | #03DAC5 6 | 7 | -------------------------------------------------------------------------------- /permissionflow/src/main/kotlin/com/innfinity/permissionflow/lib/Permission.kt: -------------------------------------------------------------------------------- 1 | package com.innfinity.permissionflow.lib 2 | 3 | data class Permission( 4 | val permission: String, 5 | val isGranted: Boolean, 6 | val shouldShowRational: Boolean = false 7 | ) 8 | -------------------------------------------------------------------------------- /demo/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /demo/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /demo/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | google() 5 | mavenCentral() 6 | } 7 | } 8 | dependencyResolutionManagement { 9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 10 | repositories { 11 | google() 12 | mavenCentral() 13 | } 14 | } 15 | include ':demo' 16 | include ':permissionflow' 17 | include ':permission-compose' 18 | -------------------------------------------------------------------------------- /permission-compose/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.android.library) 3 | alias(libs.plugins.kotlin.android) 4 | alias(libs.plugins.maven.publish) 5 | } 6 | 7 | android { 8 | namespace = "com.innfinity.compose.permissions" 9 | compileSdk = 35 10 | 11 | defaultConfig { 12 | minSdk = 27 13 | } 14 | compileOptions { 15 | sourceCompatibility = JavaVersion.VERSION_17 16 | targetCompatibility = JavaVersion.VERSION_17 17 | } 18 | kotlinOptions { 19 | jvmTarget = "17" 20 | } 21 | } 22 | 23 | dependencies { 24 | implementation(libs.material) 25 | implementation(platform(libs.androidx.compose.bom)) 26 | implementation(libs.androidx.compose.foundation) 27 | implementation(libs.androidx.activity.compose) 28 | } -------------------------------------------------------------------------------- /permissionflow/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.android.library) 3 | alias(libs.plugins.kotlin.android) 4 | alias(libs.plugins.maven.publish) 5 | } 6 | 7 | android { 8 | compileSdk = 35 9 | 10 | defaultConfig { 11 | minSdk = 21 12 | } 13 | compileOptions { 14 | sourceCompatibility = JavaVersion.VERSION_17 15 | targetCompatibility = JavaVersion.VERSION_17 16 | } 17 | kotlinOptions { 18 | jvmTarget = "17" 19 | } 20 | namespace = "com.innfinity.permissionflow.lib" 21 | } 22 | 23 | dependencies { 24 | implementation(libs.kotlinx.coroutines.core) 25 | implementation(libs.kotlinx.coroutines.android) 26 | 27 | implementation(libs.androidx.appcompat) 28 | implementation(libs.androidx.core.ktx) 29 | implementation(libs.androidx.fragment.ktx) 30 | } 31 | -------------------------------------------------------------------------------- /demo/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 14 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /demo/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.android.application) 3 | alias(libs.plugins.kotlin.android) 4 | } 5 | 6 | android { 7 | compileSdk = 35 8 | 9 | defaultConfig { 10 | applicationId = "com.innfinity.permissionflow" 11 | minSdk = 27 12 | targetSdk = 35 13 | versionCode = 1 14 | versionName = "1.0" 15 | } 16 | buildFeatures { 17 | viewBinding = true 18 | } 19 | compileOptions { 20 | sourceCompatibility = JavaVersion.VERSION_17 21 | targetCompatibility = JavaVersion.VERSION_17 22 | } 23 | kotlinOptions { 24 | jvmTarget = "17" 25 | } 26 | namespace = "com.innfinity.permissionflow" 27 | } 28 | 29 | dependencies { 30 | implementation(libs.kotlinx.coroutines.core) 31 | implementation(libs.kotlinx.coroutines.android) 32 | 33 | implementation(libs.androidx.appcompat) 34 | implementation(libs.androidx.core.ktx) 35 | implementation(libs.androidx.fragment.ktx) 36 | 37 | implementation(libs.permission.flow) 38 | } 39 | -------------------------------------------------------------------------------- /demo/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 |