package com.ys.bdtp.android.base.activities

import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import pub.devrel.easypermissions.AppSettingsDialog
import pub.devrel.easypermissions.EasyPermissions

/**
 * Activity基类
 *
 * @author  庞利祥(sybotan@126.com)
 */
open class SBaseActivity : AppCompatActivity(), EasyPermissions.PermissionCallbacks {


    /**
     * 申请权限
     *
     * @param   permissionList      权限列表
     * @param   requestCode         请求码
     */
    fun requestPermission(permissionList: Array<String>, requestCode: Int = 1) {
        // 如果没有获得相应的权限
        if (!EasyPermissions.hasPermissions(this, *permissionList)) {
            // 申请权限
            EasyPermissions.requestPermissions(this, "", requestCode, *permissionList)
        }

        return
    } // Function requestPermission()

    /**
     * 用户授权成功回调
     *
     * @param   requestCode     请求码
     * @param   perms           请求权限列表
     */
    override fun onPermissionsDenied(requestCode: Int, perms: MutableList<String>) {
        Toast.makeText(this, "用户授权失败！", Toast.LENGTH_SHORT).show()
        //toast("用户授权失败！")
        /**
         * 若是在权限弹窗中，用户勾选了'NEVER ASK AGAIN.'或者'不在提示'，且拒绝权限。
         * 这时候，需要跳转到设置界面去，让用户手动开启。
         */
        if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
            AppSettingsDialog.Builder(this)
                .setRationale("此功能需要权限，否则无法正常使用，是否打开设置")
                .setPositiveButton("是")
                .setNegativeButton("否")
                .build()
                .show()
        }
    } // Function onPermissionsDenied()

    /**
     * 用户授权成功回调
     *
     * @param   requestCode     请求码
     * @param   perms           请求权限列表
     */
    override fun onPermissionsGranted(requestCode: Int, perms: MutableList<String>) {
        Toast.makeText(this, "用户授权成功！", Toast.LENGTH_SHORT).show()
        return
    } // Function onPermissionsGranted()

    /**
     * 请求权限结果
     *
     * @param   requestCode     请求码
     * @param   permissions     请求权限列表
     * @param   grantResults    授权结果
     */
    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
        return
    } // Function onRequestPermissionsResult()
} // Class SBaseActivity()