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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
}
}