diff options
author | Allan Wang <me@allanwang.ca> | 2018-02-13 16:51:56 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-13 16:51:56 -0500 |
commit | cdb1bd6eec2c90abc9d3d982814552443c7fc3b2 (patch) | |
tree | 2d21dfcce61fec76384d862b410ee61579169bc2 /core/src/main/kotlin/ca/allanwang/kau/permissions | |
parent | f5d6ddb72a3dc369b95631a607471f9a6ea5e70f (diff) | |
download | kau-cdb1bd6eec2c90abc9d3d982814552443c7fc3b2.tar.gz kau-cdb1bd6eec2c90abc9d3d982814552443c7fc3b2.tar.bz2 kau-cdb1bd6eec2c90abc9d3d982814552443c7fc3b2.zip |
Update docs (#135)
* Update docs
* Update format
* Update dependencies
Diffstat (limited to 'core/src/main/kotlin/ca/allanwang/kau/permissions')
3 files changed, 14 insertions, 2 deletions
diff --git a/core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionManager.kt b/core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionManager.kt index 8b639ad..3b15e0b 100644 --- a/core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionManager.kt +++ b/core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionManager.kt @@ -15,6 +15,9 @@ import java.lang.ref.WeakReference /** * Created by Allan Wang on 2017-07-03. + * + * Permission manager that is decoupled from activities + * Keeps track of pending requests, and warns about invalid requests */ internal object PermissionManager { @@ -24,7 +27,7 @@ internal object PermissionManager { /** * Retrieve permissions requested in our manifest */ - val manifestPermission = lazyContext<Array<String>> { + private val manifestPermission = lazyContext<Array<String>> { try { it.packageManager.getPackageInfo(it.packageName, PackageManager.GET_PERMISSIONS)?.requestedPermissions ?: emptyArray() } catch (e: Exception) { @@ -44,7 +47,7 @@ internal object PermissionManager { } else KL.d { "Request is postponed since another one is still in progress; did you remember to override onRequestPermissionsResult?" } } - @Synchronized internal fun requestPermissions(context: Context, permissions: Array<out String>) { + @Synchronized private fun requestPermissions(context: Context, permissions: Array<out String>) { permissions.forEach { if (!manifestPermission(context).contains(it)) { KL.e { "Requested permission $it is not stated in the manifest" } @@ -57,6 +60,10 @@ internal object PermissionManager { ActivityCompat.requestPermissions(activity, permissions, 1) } + /** + * Handles permission result by allowing accepted permissions for all pending requests + * Also cleans up destroyed or completed pending requests + */ fun onRequestPermissionsResult(context: Context, permissions: Array<out String>, grantResults: IntArray) { KL.i { "On permission result: pending ${pendingResults.size}" } val count = Math.min(permissions.size, grantResults.size) diff --git a/core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionResult.kt b/core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionResult.kt index 14bfdff..ba3e6dd 100644 --- a/core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionResult.kt +++ b/core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionResult.kt @@ -4,6 +4,8 @@ import android.content.pm.PackageManager /** * Created by Allan Wang on 2017-07-03. + * + * Pending permission collector */ class PermissionResult(permissions: Array<out String>, val callback: (granted: Boolean, deniedPerm: String?) -> Unit) { val permissions = mutableSetOf(*permissions) diff --git a/core/src/main/kotlin/ca/allanwang/kau/permissions/Permissions.kt b/core/src/main/kotlin/ca/allanwang/kau/permissions/Permissions.kt index 36ad52f..4de6695 100644 --- a/core/src/main/kotlin/ca/allanwang/kau/permissions/Permissions.kt +++ b/core/src/main/kotlin/ca/allanwang/kau/permissions/Permissions.kt @@ -3,6 +3,8 @@ package ca.allanwang.kau.permissions import android.Manifest import android.app.Activity import android.content.Context +import android.os.Build +import android.support.annotation.RequiresApi /** @@ -60,6 +62,7 @@ const val PERMISSION_ADD_VOICEMAIL = Manifest.permission.ADD_VOICEMAIL const val PERMISSION_USE_SIP = Manifest.permission.USE_SIP const val PERMISSION_PROCESS_OUTGOING_CALLS = Manifest.permission.PROCESS_OUTGOING_CALLS +@RequiresApi(Build.VERSION_CODES.KITKAT_WATCH) const val PERMISSION_BODY_SENSORS = Manifest.permission.BODY_SENSORS const val PERMISSION_SEND_SMS = Manifest.permission.SEND_SMS |