aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/ca/allanwang/kau/permissions
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2018-02-13 16:51:56 -0500
committerGitHub <noreply@github.com>2018-02-13 16:51:56 -0500
commitcdb1bd6eec2c90abc9d3d982814552443c7fc3b2 (patch)
tree2d21dfcce61fec76384d862b410ee61579169bc2 /core/src/main/kotlin/ca/allanwang/kau/permissions
parentf5d6ddb72a3dc369b95631a607471f9a6ea5e70f (diff)
downloadkau-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')
-rw-r--r--core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionManager.kt11
-rw-r--r--core/src/main/kotlin/ca/allanwang/kau/permissions/PermissionResult.kt2
-rw-r--r--core/src/main/kotlin/ca/allanwang/kau/permissions/Permissions.kt3
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