From 93bccfad9f2ad78c62c7b6bf413b8fcce1d2abbc Mon Sep 17 00:00:00 2001 From: luyao Date: Tue, 18 Jun 2019 16:49:46 +0800 Subject: [PATCH] permission temp --- .../ext/permission/KtxPermissionFragment.kt | 29 +++++++++++ .../util/ktx/ext/permission/PermissionExt.kt | 50 +++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 library/src/main/java/luyao/util/ktx/ext/permission/KtxPermissionFragment.kt create mode 100644 library/src/main/java/luyao/util/ktx/ext/permission/PermissionExt.kt diff --git a/library/src/main/java/luyao/util/ktx/ext/permission/KtxPermissionFragment.kt b/library/src/main/java/luyao/util/ktx/ext/permission/KtxPermissionFragment.kt new file mode 100644 index 0000000..1eaf9bb --- /dev/null +++ b/library/src/main/java/luyao/util/ktx/ext/permission/KtxPermissionFragment.kt @@ -0,0 +1,29 @@ +package luyao.util.ktx.ext.permission + +import android.os.Bundle +import androidx.fragment.app.Fragment + +/** + * Created by luyao + * on 2019/6/18 16:27 + */ +class KtxPermissionFragment : Fragment() { + + private val PERMISSION_REQUEST_CODE = 0XFF + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + retainInstance = true + } + + fun requestPermissions(permissions: Array) { + requestPermissions(permissions, PERMISSION_REQUEST_CODE) + } + + override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + if (requestCode == PERMISSION_REQUEST_CODE) { + + } + } +} \ No newline at end of file diff --git a/library/src/main/java/luyao/util/ktx/ext/permission/PermissionExt.kt b/library/src/main/java/luyao/util/ktx/ext/permission/PermissionExt.kt new file mode 100644 index 0000000..0983e9b --- /dev/null +++ b/library/src/main/java/luyao/util/ktx/ext/permission/PermissionExt.kt @@ -0,0 +1,50 @@ +package luyao.util.ktx.ext.permission + +import android.app.Activity +import android.content.pm.PackageManager +import android.os.Build +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat + +/** + * Created by luyao + * on 2019/6/18 15:47 + */ + +fun Activity.request(vararg permissions: String) { + + val needRequestPermissions = permissions.filter { !isGranted(it) && !isRevoked(it) } + + if (needRequestPermissions.isEmpty()) { + // onGranted + } else { + val shouldShowRationalePermissions = mutableListOf() + val shouldNotShowRationalePermissions = mutableListOf() + for (permission in needRequestPermissions) { + if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) + shouldShowRationalePermissions.add(permission) + else + shouldNotShowRationalePermissions.add(permission) + } + + if (shouldShowRationalePermissions.isNotEmpty()){ + // shouldShowRequestPermissionRationale + } + + if (shouldNotShowRationalePermissions.isNotEmpty()){ + // request permission + } + } +} + + +fun Activity.isGranted(permission: String): Boolean { + return Build.VERSION.SDK_INT < Build.VERSION_CODES.M || + ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED +} + +fun Activity.isRevoked(permission: String): Boolean { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && + packageManager.isPermissionRevokedByPolicy(permission, packageName) + +} \ No newline at end of file