From 41ecea7232d4cb3e5bf4d845ad9ae3656a890bd2 Mon Sep 17 00:00:00 2001 From: gedoor Date: Sat, 27 Mar 2021 18:19:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../permission/OnPermissionsDeniedCallback.kt | 2 +- .../OnPermissionsGrantedCallback.kt | 2 +- .../permission/OnPermissionsResultCallback.kt | 4 ++-- .../OnRequestPermissionsResultCallback.kt | 10 ++------ .../app/lib/permission/PermissionActivity.kt | 16 ++++++------- .../app/lib/permission/PermissionsCompat.kt | 15 +++++------- .../io/legado/app/lib/permission/Request.kt | 23 +++++++++---------- .../app/lib/permission/RequestManager.kt | 4 ++-- .../java/io/legado/app/lib/webdav/WebDav.kt | 3 +-- 9 files changed, 34 insertions(+), 45 deletions(-) diff --git a/app/src/main/java/io/legado/app/lib/permission/OnPermissionsDeniedCallback.kt b/app/src/main/java/io/legado/app/lib/permission/OnPermissionsDeniedCallback.kt index a8a0c9110..0cc6b715b 100644 --- a/app/src/main/java/io/legado/app/lib/permission/OnPermissionsDeniedCallback.kt +++ b/app/src/main/java/io/legado/app/lib/permission/OnPermissionsDeniedCallback.kt @@ -2,6 +2,6 @@ package io.legado.app.lib.permission interface OnPermissionsDeniedCallback { - fun onPermissionsDenied(requestCode: Int, deniedPermissions: Array) + fun onPermissionsDenied(deniedPermissions: Array) } diff --git a/app/src/main/java/io/legado/app/lib/permission/OnPermissionsGrantedCallback.kt b/app/src/main/java/io/legado/app/lib/permission/OnPermissionsGrantedCallback.kt index b50adb849..fe43e947e 100644 --- a/app/src/main/java/io/legado/app/lib/permission/OnPermissionsGrantedCallback.kt +++ b/app/src/main/java/io/legado/app/lib/permission/OnPermissionsGrantedCallback.kt @@ -2,6 +2,6 @@ package io.legado.app.lib.permission interface OnPermissionsGrantedCallback { - fun onPermissionsGranted(requestCode: Int) + fun onPermissionsGranted() } diff --git a/app/src/main/java/io/legado/app/lib/permission/OnPermissionsResultCallback.kt b/app/src/main/java/io/legado/app/lib/permission/OnPermissionsResultCallback.kt index 42e7a3263..41ae2f5fc 100644 --- a/app/src/main/java/io/legado/app/lib/permission/OnPermissionsResultCallback.kt +++ b/app/src/main/java/io/legado/app/lib/permission/OnPermissionsResultCallback.kt @@ -2,8 +2,8 @@ package io.legado.app.lib.permission interface OnPermissionsResultCallback { - fun onPermissionsGranted(requestCode: Int) + fun onPermissionsGranted() - fun onPermissionsDenied(requestCode: Int, deniedPermissions: Array) + fun onPermissionsDenied(deniedPermissions: Array) } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/lib/permission/OnRequestPermissionsResultCallback.kt b/app/src/main/java/io/legado/app/lib/permission/OnRequestPermissionsResultCallback.kt index 682356bfe..2934e4c77 100644 --- a/app/src/main/java/io/legado/app/lib/permission/OnRequestPermissionsResultCallback.kt +++ b/app/src/main/java/io/legado/app/lib/permission/OnRequestPermissionsResultCallback.kt @@ -1,14 +1,8 @@ package io.legado.app.lib.permission -import android.content.Intent - interface OnRequestPermissionsResultCallback { - fun onRequestPermissionsResult( - requestCode: Int, - permissions: Array, - grantResults: IntArray - ) + fun onRequestPermissionsResult(permissions: Array, grantResults: IntArray) - fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) + fun onSettingActivityResult() } diff --git a/app/src/main/java/io/legado/app/lib/permission/PermissionActivity.kt b/app/src/main/java/io/legado/app/lib/permission/PermissionActivity.kt index 2e8336a0c..b98b16fde 100644 --- a/app/src/main/java/io/legado/app/lib/permission/PermissionActivity.kt +++ b/app/src/main/java/io/legado/app/lib/permission/PermissionActivity.kt @@ -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) diff --git a/app/src/main/java/io/legado/app/lib/permission/PermissionsCompat.kt b/app/src/main/java/io/legado/app/lib/permission/PermissionsCompat.kt index ca5e19b22..a2d604c99 100644 --- a/app/src/main/java/io/legado/app/lib/permission/PermissionsCompat.kt +++ b/app/src/main/java/io/legado/app/lib/permission/PermissionsCompat.kt @@ -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) -> Unit): Builder { + fun onDenied(callback: (deniedPermissions: Array) -> Unit): Builder { request.setOnDeniedCallback(object : OnPermissionsDeniedCallback { - override fun onPermissionsDenied( - requestCode: Int, - deniedPermissions: Array - ) { - callback(requestCode, deniedPermissions) + override fun onPermissionsDenied(deniedPermissions: Array) { + callback(deniedPermissions) } }) return this diff --git a/app/src/main/java/io/legado/app/lib/permission/Request.kt b/app/src/main/java/io/legado/app/lib/permission/Request.kt index 246844065..2de60d059 100644 --- a/app/src/main/java/io/legado/app/lib/permission/Request.kt +++ b/app/src/main/java/io/legado/app/lib/permission/Request.kt @@ -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) { 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, 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) } diff --git a/app/src/main/java/io/legado/app/lib/permission/RequestManager.kt b/app/src/main/java/io/legado/app/lib/permission/RequestManager.kt index f75e1cba7..2bc6832c7 100644 --- a/app/src/main/java/io/legado/app/lib/permission/RequestManager.kt +++ b/app/src/main/java/io/legado/app/lib/permission/RequestManager.kt @@ -58,11 +58,11 @@ internal object RequestManager : OnPermissionsResultCallback { } } - override fun onPermissionsGranted(requestCode: Int) { + override fun onPermissionsGranted() { startNextRequest() } - override fun onPermissionsDenied(requestCode: Int, deniedPermissions: Array) { + override fun onPermissionsDenied(deniedPermissions: Array) { startNextRequest() } diff --git a/app/src/main/java/io/legado/app/lib/webdav/WebDav.kt b/app/src/main/java/io/legado/app/lib/webdav/WebDav.kt index dafedc128..1570bc793 100644 --- a/app/src/main/java/io/legado/app/lib/webdav/WebDav.kt +++ b/app/src/main/java/io/legado/app/lib/webdav/WebDav.kt @@ -98,8 +98,7 @@ class WebDav(urlStr: String) { for (p in propsList) { requestProps.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")