unify the storage permission requesting

This commit is contained in:
tibbi 2017-10-22 11:36:18 +02:00
parent b29f7f07cc
commit e805baf6eb
1 changed files with 19 additions and 25 deletions

View File

@ -122,42 +122,36 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
private fun checkIntents() {
if (intent?.action == Intent.ACTION_SEND && intent.type.startsWith("image/")) {
handlePermission(PERMISSION_WRITE_STORAGE) {
if (it) {
getStoragePermission {
val uri = intent.getParcelableExtra<Uri>(Intent.EXTRA_STREAM)
tryOpenUri(uri)
} else {
toast(R.string.no_storage_permissions)
}
}
}
if (intent?.action == Intent.ACTION_SEND_MULTIPLE && intent.type.startsWith("image/")) {
handlePermission(PERMISSION_WRITE_STORAGE) {
if (it) {
getStoragePermission {
val imageUris = intent.getParcelableArrayListExtra<Uri>(Intent.EXTRA_STREAM)
for (uri in imageUris) {
if (tryOpenUri(uri)) {
break
}
}
} else {
toast(R.string.no_storage_permissions)
}
imageUris.any { tryOpenUri(it) }
}
}
if (intent?.action == Intent.ACTION_VIEW && intent.data != null) {
val path = intent.data!!.path
getStoragePermission {
val path = intent.data.path
openPath(path)
}
}
}
private fun getStoragePermission(callback: () -> Unit) {
handlePermission(PERMISSION_WRITE_STORAGE) {
if (it) {
openPath(path)
callback()
} else {
toast(R.string.no_storage_permissions)
}
}
}
}
private fun tryOpenUri(uri: Uri) = when {
uri.scheme == "file" -> openPath(uri.path)