Merge pull request #1615 from kiwix/feature/macgills/request-read-before-opening-zim

Require Read Permission be granted before continuing Custom app flow
This commit is contained in:
Seán Mac Gillicuddy 2019-12-05 13:08:46 +00:00 committed by GitHub
commit 2fed244666
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -18,9 +18,14 @@
package org.kiwix.kiwixmobile.custom.main
import android.Manifest.permission.READ_EXTERNAL_STORAGE
import android.annotation.TargetApi
import android.content.pm.PackageManager.PERMISSION_DENIED
import android.os.Build.VERSION_CODES
import android.os.Bundle
import android.util.Log
import android.view.Menu
import androidx.core.content.ContextCompat
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.start
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.main.WebViewCallback
@ -35,6 +40,8 @@ import org.kiwix.kiwixmobile.custom.main.ValidationState.HasFile
import java.util.Locale
import javax.inject.Inject
const val REQUEST_READ_FOR_OBB = 5002
class CustomMainActivity : CoreMainActivity() {
@Inject lateinit var customFileValidator: CustomFileValidator
@ -53,6 +60,11 @@ class CustomMainActivity : CoreMainActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requireEnforcedLanguage()
openObbOrZim()
}
@TargetApi(VERSION_CODES.M)
private fun openObbOrZim() {
customFileValidator.validate(
onFilesFound = {
when (it) {
@ -64,12 +76,27 @@ class CustomMainActivity : CoreMainActivity() {
}
},
onNoFilesFound = {
finish()
start<CustomDownloadActivity>()
if (ContextCompat.checkSelfPermission(this, READ_EXTERNAL_STORAGE) == PERMISSION_DENIED) {
requestPermissions(arrayOf(READ_EXTERNAL_STORAGE), REQUEST_READ_FOR_OBB)
} else {
finish()
start<CustomDownloadActivity>()
}
}
)
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == REQUEST_READ_FOR_OBB) {
openObbOrZim()
}
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
val onCreateOptionsMenu = super.onCreateOptionsMenu(menu)
menu?.findItem(R.id.menu_help)?.isVisible = false