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