permission temp

This commit is contained in:
luyao 2019-06-18 16:49:46 +08:00
parent 4b1bc30d32
commit 93bccfad9f
2 changed files with 79 additions and 0 deletions

View File

@ -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<String>) {
requestPermissions(permissions, PERMISSION_REQUEST_CODE)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == PERMISSION_REQUEST_CODE) {
}
}
}

View File

@ -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<String>()
val shouldNotShowRationalePermissions = mutableListOf<String>()
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)
}