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