栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

用户权限申请之拨打电话(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用户权限申请之拨打电话(一)

用户权限申请之拨打电话(一)

ps:代码来源于郭大神的第一行代码。第三版,仅做学习使用

class MainActivity : AppCompatActivity() {

    var makecall: Button? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        makecall = findViewById(R.id.makecall)
        makecall?.setOnClickListener {
            //6.0之前可以这样使用危险权限来拨打电话,
            //6.0之后这种危险权限就被禁止了
            //java.lang.SecurityException: Permission Denial: starting Intent
            // { act=android.intent.action.CALL dat=tel:xxxxx cmp=com.android.server.telecom/.components.UserCallActivity }
            // from ProcessRecord{706f4ee 24864:com.cjh.runtimepermissiontest/u0a332} (pid=24864, uid=10332)
            // with revoked permission android.permission.CALL_PHONE

            
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){
                //向用户申请权限授权,              实例          String数组                                请求码
                ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CALL_PHONE), 1)
            } else{
                call()
            }
        }
    }

    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        //用户是否同意权限申请都会回调到这里,授权的结果则会封装在grantResults参数中
        when (requestCode) {
            1 -> {
                if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    call()
                } else {
                    Toast.makeText(this, "You denied the permission", Toast.LENGTH_SHORT).show()
                }
            }
        }
    }

    private fun call() {
        try {
            val intent = Intent(Intent.ACTION_CALL)
            intent.data = Uri.parse("tel:10086")
            startActivity(intent)
        } catch (e: SecurityException){
            e.printStackTrace()
        }

    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/340255.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号