From d97652233b9b6406accc3064cea1a20de3c84313 Mon Sep 17 00:00:00 2001 From: Laurent Date: Fri, 29 Nov 2019 11:34:01 +0100 Subject: [PATCH] Fixes a crash where the write external storage permission was required --- app/src/main/AndroidManifest.xml | 1 + .../android/ui/activity/ImportActivity.kt | 52 ++++++------------- .../android/ui/activity/components/Codes.kt | 3 +- .../components/PokerAnalyticsActivity.kt | 21 +++++++- .../android/util/PermissionRequest.kt | 3 ++ 5 files changed, 42 insertions(+), 38 deletions(-) create mode 100644 app/src/main/java/net/pokeranalytics/android/util/PermissionRequest.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 144b2e66..2145a55a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,6 +7,7 @@ + { // import -// val data = it.data -// if (data != null) { -// this.requestImportConfirmation(data) -// } else { -// throw PAIllegalStateException("URI null on import") -// } -// } -// else -> { -// Timber.w("Intent ${intent.action} unmanaged") -// } -// } -// } -// -// } + } + + } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt index a6dfb446..8ea9aa87 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt @@ -12,7 +12,8 @@ enum class RequestCode(var value: Int) { NEW_REPORT(802), IMPORT(900), SUBSCRIPTION(901), - CURRENCY(902) + CURRENCY(902), + PERMISSION_WRITE_EXTERNAL_STORAGE(1000) } enum class ResultCode(var value: Int) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/PokerAnalyticsActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/PokerAnalyticsActivity.kt index 5b699ba9..ffd96541 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/PokerAnalyticsActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/PokerAnalyticsActivity.kt @@ -14,10 +14,11 @@ import com.google.android.libraries.places.api.model.PlaceLikelihood import io.realm.Realm import net.pokeranalytics.android.model.realm.Location import net.pokeranalytics.android.util.LocationManager +import net.pokeranalytics.android.util.PermissionRequest import java.util.* -open class PokerAnalyticsActivity : AppCompatActivity() { +abstract class PokerAnalyticsActivity : AppCompatActivity() { companion object { const val PERMISSION_REQUEST_ACCESS_FINE_LOCATION = 1000 @@ -26,6 +27,7 @@ open class PokerAnalyticsActivity : AppCompatActivity() { private var realm: Realm? = null private var permissionCallback: ((granted: Boolean) -> Unit)? = null + private var permissionRequest: PermissionRequest? = null // Lifecycle @@ -79,6 +81,15 @@ open class PokerAnalyticsActivity : AppCompatActivity() { } } + this.permissionRequest?.let { request -> + + if (requestCode == request.code) { + val allPermissionsPresent = permissions.all { request.permissions.contains(it) } + val allGranted = grantResults.all { it == PackageManager.PERMISSION_GRANTED } + request.callback.invoke(allPermissionsPresent && allGranted) + } + } + } override fun onOptionsItemSelected(item: MenuItem?): Boolean { @@ -159,6 +170,14 @@ open class PokerAnalyticsActivity : AppCompatActivity() { } } + /** + * Ask for app permission + */ + fun askForPermission(permissions: Array, requestCode: Int, permissionCallback: ((granted: Boolean) -> Unit)) { + this.permissionRequest = PermissionRequest(permissions, permissionCallback, requestCode) + ActivityCompat.requestPermissions(this, permissions, requestCode) + } + /** * Find the current location */ diff --git a/app/src/main/java/net/pokeranalytics/android/util/PermissionRequest.kt b/app/src/main/java/net/pokeranalytics/android/util/PermissionRequest.kt new file mode 100644 index 00000000..d98a7863 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/util/PermissionRequest.kt @@ -0,0 +1,3 @@ +package net.pokeranalytics.android.util + +class PermissionRequest(var permissions: Array, var callback: ((granted: Boolean) -> Unit), var code: Int) \ No newline at end of file