欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android權(quán)限機(jī)制深入分析講解

 更新時(shí)間:2022年12月05日 09:30:25   作者:Hdnw  
Android的權(quán)限管理遵循的是“最小特權(quán)原則”,即所有的Android應(yīng)用程序都被賦予了最小權(quán)限。一個(gè)Android應(yīng)用程序如果沒有聲明任何權(quán)限,就沒有任何特權(quán)

1、權(quán)限

  • 普通權(quán)限:不會(huì)直接威脅到用戶安全和隱私的權(quán)限
  • 危險(xiǎn)權(quán)限:那些可能會(huì)觸及用戶隱私或者對(duì)設(shè)備安全性造成影響的權(quán)限。

到Android 10 系統(tǒng)為止所以的危險(xiǎn)權(quán)限

2、在程序運(yùn)行時(shí)申請(qǐng)權(quán)限

  • 普通權(quán)限申請(qǐng):系統(tǒng)會(huì)自動(dòng)幫我們進(jìn)行授權(quán),不需要用戶手動(dòng)操作。
  • 危險(xiǎn)權(quán)限申請(qǐng):在Android6.0及以上系統(tǒng)在使用時(shí)必須進(jìn)行運(yùn)行時(shí)權(quán)限處理。

危險(xiǎn)權(quán)限申請(qǐng)步驟

(1)判斷用戶是否給我們授權(quán)了。

checkSelfPermission()方法,第一個(gè)參數(shù)是Context,第二個(gè)參數(shù)是具體的權(quán)限名,然后我們使用方法的返回值和PackageManager.PERMISSION_GRANTED作比較。相等就說明用戶已經(jīng)授權(quán),我們直接執(zhí)行撥打電話的操作進(jìn)行。不等就說明用戶沒有授權(quán),則需要調(diào)用ActivityCompat.requestPermissions()方法向用戶申請(qǐng)權(quán)限。requestPermissions()方法有三個(gè)參數(shù),第一個(gè)參數(shù)要求是Activity的實(shí)例,第二個(gè)參數(shù)是一個(gè)String數(shù)組,把要申請(qǐng)的權(quán)限名放入數(shù)組中,第三個(gè)參數(shù)是唯一的請(qǐng)求碼。

if(ContextCompat.checkSelfPermission(this,android.Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED){
                ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.CALL_PHONE),1)
 }
 else{
          call()
 }

(2)用戶已經(jīng)授權(quán),我們直接執(zhí)行撥打電話的操作。

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

(3)用戶沒有授權(quán),調(diào)用ActivityCompat.requestPermissions()方法之后,系統(tǒng)會(huì)彈出一個(gè)權(quán)限申請(qǐng)的對(duì)話框,用戶可以選擇接受或者拒絕申請(qǐng),最后回調(diào)到onRequestPermissionsResult()方法·。

override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, 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()
                }
            }
        }
    }

到此這篇關(guān)于Android權(quán)限機(jī)制深入分析講解的文章就介紹到這了,更多相關(guān)Android權(quán)限機(jī)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論