sagar-viradiya / eazypermissions Goto Github PK
View Code? Open in Web Editor NEWAndroid library to handle runtime permission through Kotlin coroutines and Livedata.
License: Apache License 2.0
Android library to handle runtime permission through Kotlin coroutines and Livedata.
License: Apache License 2.0
With the demise of JCenter, how can I install this library into my Android Studio project?
com.sagar:dslpermission:2.0.0
Hi Segar,
deniedPermissions is available on PermissionResult.PermissionDenied.
Why don't you support grantedPermissions on PermissionResult.PermissionGranted and something on PermissionResult.ShowRational?
I need to separately handle each permission.
It would be helpful if it is supported.
While testing the library I ran into this issue (p.s. the library is awesome ๐):
Caused by kotlin.UninitializedPropertyAccessException: lateinit property completableDeferred has not been initialized
at com.eazypermissions.coroutinespermission.PermissionManager.onDestroy + 113(PermissionManager.kt:113)
at androidx.fragment.app.Fragment.performDestroy + 2825(Fragment.java:2825)
at androidx.fragment.app.FragmentManagerImpl.moveToState + 1028(FragmentManagerImpl.java:1028)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState + 1238(FragmentManagerImpl.java:1238)
at androidx.fragment.app.FragmentManagerImpl.moveToState + 1303(FragmentManagerImpl.java:1303)
at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange + 2656(FragmentManagerImpl.java:2656)
at androidx.fragment.app.FragmentManagerImpl.dispatchDestroy + 2641(FragmentManagerImpl.java:2641)
at androidx.fragment.app.FragmentController.dispatchDestroy + 329(FragmentController.java:329)
at androidx.fragment.app.FragmentActivity.onDestroy + 366(FragmentActivity.java:366)
at androidx.appcompat.app.AppCompatActivity.onDestroy + 233(AppCompatActivity.java:233)
...
I personally love this library. currently I am not able request special permissions like All files access, draw over other apps etc.. Please provide support for those permissions also. So that this library provide complete support for all kinds of permissions.
Hi,
As JCenter will be closed, is it possible to reupload your library to MavenCentral?
This is how I use this library to requestPermissions
in a Fragment
:
private fun showQrCodeCamera() {
CoroutineScope(Job() + Dispatchers.Default).launch {
withContext(Dispatchers.Main) {
val permissionResult = PermissionManager.requestPermissions(
this@presentationFragment,
4,
Manifest.permission.CAMERA
)
when (permissionResult) {
is PermissionResult.PermissionGranted -> {
codeScanner.apply {
startPreview()
}
}
else -> {
showSnackBar(getString(R.string.camera_permission_denied))
}
}
}
}
}
And LeakCanary detects this as a leak:
โฌโโโ
โ GC Root: Java local variable
โ
โโ kotlinx.coroutines.scheduling.CoroutineScheduler$Worker thread
โ Leaking: UNKNOWN
โ Thread name: 'DefaultDispatcher-worker-3'
โ โ CoroutineScheduler$Worker.<Java Local>
โ ~~~~~~~~~~~~
โโ kotlinx.coroutines.DispatchedContinuation instance
โ Leaking: UNKNOWN
โ โ DispatchedContinuation.callerFrame
โ ~~~~~~~~~~~
โโ com.examplee.presentationFragment$showQrCodeCamera$1 instance
โ Leaking: UNKNOWN
โ Anonymous subclass of kotlin.coroutines.jvm.internal.SuspendLambda
โ โ presentationFragment$showQrCodeCamera$1.this$0
โ ~~~~~~
โฐโ com.examplee.presentationFragment instance
โ Leaking: YES (ObjectWatcher was watching this because com.examplee.presentationFragment received Fragment#onDestroy() callback and Fragment#mFragmentManager is null)
โ key = 9f1a985f-899f-45ae-a526-3da8a630f1a2
โ watchDurationMillis = 41787
โ retainedDurationMillis = 36786
METADATA
Build.VERSION.SDK_INT: 29
Build.MANUFACTURER: Google
LeakCanary version: 2.4
App process name: com.example.dev
Analysis duration: 12284 ms
Please, add warning to your readme about using retained fragment.
Used your code in a new Android application:
requestPermissions(Manifest.permission.ACCESS_FINE_LOCATION) {
requestCode = 1
resultCallback = {
handlePermissionsResult(this)
}
}
It crashes with:
java.lang.NoSuchMethodError: No virtual method getRequestCode()I in class Lcom/eazypermissions/common/model/PermissionResult; or its super classes (declaration of 'com.eazypermissions.common.model.PermissionResult' appears in base.apk)
at com.eazypermissions.dsl.PermissionManager.onPermissionResult(PermissionManager.kt:35)
at com.eazypermissions.common.BasePermissionManager.requestPermissions(BasePermissionManager.kt:82)
at com.eazypermissions.dsl.PermissionManager.access$requestPermissions(PermissionManager.kt:30)
at com.eazypermissions.dsl.PermissionManager$Companion._requestPermissions(PermissionManager.kt:129)
The "requestCode" is shown as unresolved in
override fun onPermissionResult(permissionResult: PermissionResult) {
callbackMap[permissionResult.requestCode]?.let {
permissionResult.it()
}
callbackMap.remove(permissionResult.requestCode)
}
Can't build project with version 2.0.2, because of:
ERROR: Failed to resolve: com.sagar:common:2.0.2
dependencies{ ... implementation 'com.sagar:coroutinespermission:2.0.2' ... }
Version 2.0.1 works correctly, but I need to update because of #18
Add support for Kotlin DSL for those who just want to consume lib without coroutines and LiveData.
Move the introduction to Coroutines, LiveData and Kotlin DSL in the individual README file within the respective module.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.