gitextract_y6ni10jf/ ├── .github/ │ ├── ISSUE_TEMPLATE.md │ └── workflows/ │ ├── deploy_snapshot.yml │ ├── ktx-release.yml │ ├── pull_request_ci.yml │ └── release.yml ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── annotation/ │ ├── .gitignore │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ └── main/ │ └── java/ │ └── permissions/ │ └── dispatcher/ │ ├── GrantableRequest.java │ ├── NeedsPermission.java │ ├── OnNeverAskAgain.java │ ├── OnPermissionDenied.java │ ├── OnShowRationale.java │ ├── PermissionRequest.java │ └── RuntimePermissions.java ├── build.gradle ├── buildSrc/ │ ├── build.gradle │ └── src/ │ └── main/ │ └── groovy/ │ └── permissions/ │ └── dispatcher/ │ ├── AarToJarDependencyPlugin.groovy │ ├── AndroidJarDependencyExtension.groovy │ └── AndroidJarDependencyPlugin.groovy ├── doc/ │ ├── java_usage.md │ ├── maxsdkversion.md │ ├── migration_guide.md │ └── special_permissions.md ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── ktx/ │ ├── README.md │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── permissions/ │ │ └── dispatcher/ │ │ └── ktx/ │ │ ├── ActivityExtensions.kt │ │ ├── Event.kt │ │ ├── FragmentExtensions.kt │ │ ├── KtxPermissionRequest.kt │ │ ├── LocationPermission.kt │ │ ├── PermissionRequestFragment.kt │ │ ├── PermissionRequestResult.kt │ │ ├── PermissionRequestType.kt │ │ ├── PermissionRequestViewModel.kt │ │ ├── PermissionsRequester.kt │ │ ├── PermissionsRequesterImpl.kt │ │ └── TypeAliases.kt │ └── test/ │ ├── java/ │ │ └── permissions/ │ │ └── dispatcher/ │ │ └── test/ │ │ ├── EventTest.kt │ │ ├── KtxPermissionRequestTest.kt │ │ ├── LocationPermissionTest.kt │ │ └── PermissionRequestViewModelTest.kt │ └── resources/ │ └── mockito-extensions/ │ └── org.mockito.plugins.MockMaker ├── ktx-sample/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── permissions/ │ │ └── dispatcher/ │ │ └── ktx/ │ │ └── sample/ │ │ ├── MainActivity.kt │ │ └── MainFragment.kt │ └── res/ │ ├── layout/ │ │ ├── activity_main.xml │ │ ├── fragment_camera.xml │ │ └── fragment_main.xml │ └── values/ │ ├── dimens.xml │ ├── strings.xml │ └── template-styles.xml ├── library/ │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── permissions/ │ │ └── dispatcher/ │ │ └── PermissionUtils.java │ └── test/ │ └── java/ │ └── permissions/ │ └── dispatcher/ │ └── ApiLevelTestSuite.java ├── lint/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── permissions/ │ │ └── dispatcher/ │ │ ├── CallNeedsPermissionDetector.java │ │ ├── CallOnRequestPermissionsResultDetector.java │ │ ├── NoCorrespondingNeedsPermissionDetector.java │ │ ├── NoDelegateOnResumeDetector.java │ │ └── PermissionsDispatcherIssueRegistry.java │ └── test/ │ └── java/ │ └── permissions/ │ └── dispatcher/ │ ├── CallNeedsPermissionDetectorKtTest.kt │ ├── CallNeedsPermissionDetectorTest.kt │ ├── CallOnRequestPermissionsResultDetectorKtTest.kt │ ├── CallOnRequestPermissionsResultDetectorTest.kt │ ├── NoCorrespondingNeedsPermissionDetectorKtTest.kt │ ├── NoCorrespondingNeedsPermissionDetectorTest.kt │ ├── NoDelegateOnResumeDetectorKtTest.kt │ ├── NoDelegateOnResumeDetectorTest.kt │ ├── PermissionsDispatcherIssueRegistryTest.kt │ └── Utils.kt ├── processor/ │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ ├── main/ │ │ ├── kotlin/ │ │ │ └── permissions/ │ │ │ └── dispatcher/ │ │ │ └── processor/ │ │ │ ├── PermissionsProcessor.kt │ │ │ ├── ProcessorUnit.kt │ │ │ ├── RequestCodeProvider.kt │ │ │ ├── RuntimePermissionsElement.kt │ │ │ ├── exception/ │ │ │ │ ├── DuplicatedMethodNameException.kt │ │ │ │ ├── DuplicatedValueException.kt │ │ │ │ ├── MixPermissionTypeException.kt │ │ │ │ ├── NoAnnotatedMethodsException.kt │ │ │ │ ├── NoParametersAllowedException.kt │ │ │ │ ├── NoThrowsAllowedException.kt │ │ │ │ ├── PrivateMethodException.kt │ │ │ │ ├── SpecialPermissionsWithNeverAskAgainException.kt │ │ │ │ ├── WrongClassException.kt │ │ │ │ ├── WrongParametersException.kt │ │ │ │ └── WrongReturnTypeException.kt │ │ │ ├── impl/ │ │ │ │ ├── java/ │ │ │ │ │ ├── JavaActivityProcessorUnit.kt │ │ │ │ │ ├── JavaBaseProcessorUnit.kt │ │ │ │ │ ├── JavaFragmentProcessorUnit.kt │ │ │ │ │ ├── SensitivePermissionInterface.kt │ │ │ │ │ ├── SystemAlertWindowHelper.kt │ │ │ │ │ └── WriteSettingsHelper.kt │ │ │ │ └── kotlin/ │ │ │ │ ├── KotlinActivityProcessorUnit.kt │ │ │ │ ├── KotlinBaseProcessorUnit.kt │ │ │ │ ├── KotlinFragmentProcessorUnit.kt │ │ │ │ ├── SensitivePermissionInterface.kt │ │ │ │ ├── SystemAlertWindowHelper.kt │ │ │ │ └── WriteSettingsHelper.kt │ │ │ └── util/ │ │ │ ├── Constants.kt │ │ │ ├── Extensions.kt │ │ │ ├── Helpers.kt │ │ │ └── Validators.kt │ │ └── resources/ │ │ └── META-INF/ │ │ ├── gradle/ │ │ │ └── incremental.annotation.processors │ │ └── services/ │ │ └── javax.annotation.processing.Processor │ └── test/ │ ├── java/ │ │ └── permissions/ │ │ └── dispatcher/ │ │ └── processor/ │ │ ├── KtProcessorTestSuite.kt │ │ ├── ProcessorTestSuite.java │ │ ├── base/ │ │ │ ├── AndroidAwareClassLoader.java │ │ │ ├── BaseTest.java │ │ │ ├── StringEquals.java │ │ │ └── TestSuite.java │ │ ├── data/ │ │ │ └── Source.java │ │ └── util/ │ │ └── ExtensionsTest.kt │ └── resources/ │ └── mockito-extensions/ │ └── org.mockito.plugins.MockMaker ├── sample/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── kotlin/ │ │ └── permissions/ │ │ └── dispatcher/ │ │ └── sample/ │ │ ├── MainActivity.kt │ │ ├── camera/ │ │ │ ├── CameraPreview.kt │ │ │ └── CameraPreviewFragment.kt │ │ └── contacts/ │ │ └── ContactsFragment.kt │ └── res/ │ ├── layout/ │ │ ├── activity_main.xml │ │ ├── fragment_camera.xml │ │ └── fragment_contacts.xml │ └── values/ │ ├── dimens.xml │ ├── strings.xml │ └── template-styles.xml ├── settings.gradle └── test/ ├── .gitignore ├── build.gradle └── src/ ├── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── permissions/ │ └── dispatcher/ │ └── test/ │ ├── ActivityOnlyNeedsPermission.java │ ├── ActivityWithAllAnnotations.java │ ├── ActivityWithAllAnnotationsKt.kt │ ├── ActivityWithNoParameterArgumentKt.kt │ ├── ActivityWithOnNeverAskAgain.java │ ├── ActivityWithOnPermissionDenied.java │ ├── ActivityWithParametersKt.kt │ ├── ActivityWithShowRationale.java │ ├── ActivityWithSystemAlertWindow.java │ ├── ActivityWithSystemAlertWindowAllAnnotations.java │ ├── ActivityWithSystemAlertWindowKt.kt │ ├── ActivityWithSystemAlertWindowKtAllAnnotations.kt │ ├── ActivityWithWriteSetting.java │ ├── ActivityWithWriteSettingAllAnnotations.java │ ├── ActivityWithWriteSettingKt.kt │ ├── ActivityWithWriteSettingKtAllAnnotations.kt │ ├── FragmentWithAllAnnotations.java │ └── FragmentWithAllAnnotationsKt.kt └── test/ └── java/ └── permissions/ └── dispatcher/ └── test/ ├── ActivityOnlyNeedsPermissionPermissionsDispatcherTest.kt ├── ActivityWithAllAnnotationsKtPermissionsDispatcherTest.kt ├── ActivityWithAllAnnotationsPermissionsDispatcherTest.kt ├── ActivityWithNoParameterArgumentKtPermissionsDispatcherTest.kt ├── ActivityWithOnNeverAskAgainPermissionsDispatcherTest.kt ├── ActivityWithOnPermissionDeniedPermissionsDispatcherTest.kt ├── ActivityWithParametersKtPermissionsDispatcherTest.kt ├── ActivityWithShowRationalePermissionsDispatcherTest.kt ├── ActivityWithSystemAlertWindowAllAnnotationsPermissionsDispatcherTest.kt ├── ActivityWithSystemAlertWindowKtAllAnnotationsTest.kt ├── ActivityWithSystemAlertWindowKtTest.kt ├── ActivityWithSystemAlertWindowPermissionsDispatcherTest.kt ├── ActivityWithWriteSettingAllAnnotationsPermissionsDispatcherTest.kt ├── ActivityWithWriteSettingKtAllAnnotationsTest.kt ├── ActivityWithWriteSettingKtTest.kt ├── ActivityWithWriteSettingPermissionsDispatcherTest.kt ├── Extensions.kt ├── FragmentWithAllAnnotationsKtPermissionsDispatcherTest.kt └── FragmentWithAllAnnotationsPermissionsDispatcherTest.kt