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 { 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 { interface OnPermissionsGrantedCallback {
fun onPermissionsGranted(requestCode: Int) fun onPermissionsGranted()
} }

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

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

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

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

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

Loading…
Cancel
Save