pull/915/head
gedoor 4 years ago
parent da7b2276f2
commit 41ecea7232
  1. 2
      app/src/main/java/io/legado/app/lib/permission/OnPermissionsDeniedCallback.kt
  2. 2
      app/src/main/java/io/legado/app/lib/permission/OnPermissionsGrantedCallback.kt
  3. 4
      app/src/main/java/io/legado/app/lib/permission/OnPermissionsResultCallback.kt
  4. 10
      app/src/main/java/io/legado/app/lib/permission/OnRequestPermissionsResultCallback.kt
  5. 16
      app/src/main/java/io/legado/app/lib/permission/PermissionActivity.kt
  6. 15
      app/src/main/java/io/legado/app/lib/permission/PermissionsCompat.kt
  7. 23
      app/src/main/java/io/legado/app/lib/permission/Request.kt
  8. 4
      app/src/main/java/io/legado/app/lib/permission/RequestManager.kt
  9. 3
      app/src/main/java/io/legado/app/lib/webdav/WebDav.kt

@ -2,6 +2,6 @@ package io.legado.app.lib.permission
interface OnPermissionsDeniedCallback {
fun onPermissionsDenied(requestCode: Int, deniedPermissions: Array<String>)
fun onPermissionsDenied(deniedPermissions: Array<String>)
}

@ -2,6 +2,6 @@ package io.legado.app.lib.permission
interface OnPermissionsGrantedCallback {
fun onPermissionsGranted(requestCode: Int)
fun onPermissionsGranted()
}

@ -2,8 +2,8 @@ package io.legado.app.lib.permission
interface OnPermissionsResultCallback {
fun onPermissionsGranted(requestCode: Int)
fun onPermissionsGranted()
fun onPermissionsDenied(requestCode: Int, deniedPermissions: Array<String>)
fun onPermissionsDenied(deniedPermissions: Array<String>)
}

@ -1,14 +1,8 @@
package io.legado.app.lib.permission
import android.content.Intent
interface OnRequestPermissionsResultCallback {
fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
)
fun onRequestPermissionsResult(permissions: Array<String>, grantResults: IntArray)
fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
fun onSettingActivityResult()
}

@ -5,6 +5,7 @@ import android.net.Uri
import android.os.Bundle
import android.provider.Settings
import android.view.KeyEvent
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import io.legado.app.R
@ -12,6 +13,12 @@ import io.legado.app.utils.toastOnUi
class PermissionActivity : AppCompatActivity() {
private val startSettingActivity =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
RequestPlugins.sRequestCallback?.onSettingActivityResult()
finish()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -30,7 +37,7 @@ class PermissionActivity : AppCompatActivity() {
-> try {
val settingIntent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
settingIntent.data = Uri.fromParts("package", packageName, null)
startActivityForResult(settingIntent, Request.TYPE_REQUEST_SETTING)
startSettingActivity.launch(settingIntent)
} catch (e: Exception) {
toastOnUi(R.string.tip_cannot_jump_setting_page)
finish()
@ -46,19 +53,12 @@ class PermissionActivity : AppCompatActivity() {
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
RequestPlugins.sRequestCallback?.onRequestPermissionsResult(
requestCode,
permissions,
grantResults
)
finish()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
RequestPlugins.sRequestCallback?.onActivityResult(requestCode, resultCode, data)
finish()
}
override fun startActivity(intent: Intent) {
super.startActivity(intent)
overridePendingTransition(0, 0)

@ -34,22 +34,19 @@ class PermissionsCompat private constructor() {
return this
}
fun onGranted(callback: (requestCode: Int) -> Unit): Builder {
fun onGranted(callback: () -> Unit): Builder {
request.setOnGrantedCallback(object : OnPermissionsGrantedCallback {
override fun onPermissionsGranted(requestCode: Int) {
callback(requestCode)
override fun onPermissionsGranted() {
callback()
}
})
return this
}
fun onDenied(callback: (requestCode: Int, deniedPermissions: Array<String>) -> Unit): Builder {
fun onDenied(callback: (deniedPermissions: Array<String>) -> Unit): Builder {
request.setOnDeniedCallback(object : OnPermissionsDeniedCallback {
override fun onPermissionsDenied(
requestCode: Int,
deniedPermissions: Array<String>
) {
callback(requestCode, deniedPermissions)
override fun onPermissionsDenied(deniedPermissions: Array<String>) {
callback(deniedPermissions)
}
})
return this

@ -1,6 +1,5 @@
package io.legado.app.lib.permission
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import androidx.annotation.StringRes
@ -12,6 +11,7 @@ import io.legado.app.R
import io.legado.app.utils.startActivity
import java.util.*
@Suppress("MemberVisibilityCanBePrivate")
internal class Request : OnRequestPermissionsResultCallback {
internal val requestTime: Long
@ -75,7 +75,7 @@ internal class Request : OnRequestPermissionsResultCallback {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
if (deniedPermissions == null) {
onPermissionsGranted(requestCode)
onPermissionsGranted()
} else {
val rationale =
if (rationaleResId != 0) source?.context?.getText(rationaleResId) else rationale
@ -98,7 +98,7 @@ internal class Request : OnRequestPermissionsResultCallback {
putExtra(PermissionActivity.KEY_INPUT_PERMISSIONS, deniedPermissions)
}
} else {
onPermissionsGranted(requestCode)
onPermissionsGranted()
}
}
}
@ -151,26 +151,25 @@ internal class Request : OnRequestPermissionsResultCallback {
}
}
private fun onPermissionsGranted(requestCode: Int) {
private fun onPermissionsGranted() {
try {
grantedCallback?.onPermissionsGranted(requestCode)
grantedCallback?.onPermissionsGranted()
} catch (ignore: Exception) {
}
RequestPlugins.sResultCallback?.onPermissionsGranted(requestCode)
RequestPlugins.sResultCallback?.onPermissionsGranted()
}
private fun onPermissionsDenied(requestCode: Int, deniedPermissions: Array<String>) {
try {
deniedCallback?.onPermissionsDenied(requestCode, deniedPermissions)
deniedCallback?.onPermissionsDenied(deniedPermissions)
} catch (ignore: Exception) {
}
RequestPlugins.sResultCallback?.onPermissionsDenied(requestCode, deniedPermissions)
RequestPlugins.sResultCallback?.onPermissionsDenied(deniedPermissions)
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
@ -184,14 +183,14 @@ internal class Request : OnRequestPermissionsResultCallback {
onPermissionsDenied(requestCode, deniedPermissions)
}
} else {
onPermissionsGranted(requestCode)
onPermissionsGranted()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
override fun onSettingActivityResult() {
val deniedPermissions = deniedPermissions
if (deniedPermissions == null) {
onPermissionsGranted(this.requestCode)
onPermissionsGranted()
} else {
onPermissionsDenied(this.requestCode, deniedPermissions)
}

@ -58,11 +58,11 @@ internal object RequestManager : OnPermissionsResultCallback {
}
}
override fun onPermissionsGranted(requestCode: Int) {
override fun onPermissionsGranted() {
startNextRequest()
}
override fun onPermissionsDenied(requestCode: Int, deniedPermissions: Array<String>) {
override fun onPermissionsDenied(deniedPermissions: Array<String>) {
startNextRequest()
}

@ -98,8 +98,7 @@ class WebDav(urlStr: String) {
for (p in propsList) {
requestProps.append("<a:").append(p).append("/>\n")
}
val requestPropsStr: String
requestPropsStr = if (requestProps.toString().isEmpty()) {
val requestPropsStr: String = if (requestProps.toString().isEmpty()) {
DIR.replace("%s", "")
} else {
String.format(DIR, requestProps.toString() + "\n")

Loading…
Cancel
Save