You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
2.0 KiB

package com.galaxy.permision
import android.Manifest
import android.app.Activity
import android.content.pm.PackageManager
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
object AccountPermissionUtils {
private const val PERMISSION_REQUEST_CODE = 123
/**
* 检查并请求账户管理所需的权限
* @return 如果所有权限已授予返回true否则返回false
*/
fun checkAndRequestAccountPermissions(activity: Activity): Boolean {
val permissions = arrayOf(
"android.permission.AUTHENTICATE_ACCOUNTS",
"android.permission.MANAGE_ACCOUNTS",
"android.permission.ADD_ACCOUNTS"
)
val missingPermissions = mutableListOf<String>()
// 检查缺少的权限
for (permission in permissions) {
if (ContextCompat.checkSelfPermission(
activity,
permission
) != PackageManager.PERMISSION_GRANTED
) {
missingPermissions.add(permission)
}
}
// 请求缺少的权限
if (missingPermissions.isNotEmpty()) {
ActivityCompat.requestPermissions(
activity,
missingPermissions.toTypedArray(),
PERMISSION_REQUEST_CODE
)
return false
}
// 所有权限已授予
return true
}
/**
* 处理权限请求结果
* @return 如果所有请求的权限都被授予返回true否则返回false
*/
fun handlePermissionResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
): Boolean {
if (requestCode == PERMISSION_REQUEST_CODE) {
for (result in grantResults) {
if (result != PackageManager.PERMISSION_GRANTED) {
return false
}
}
return true
}
return false
}
}