Android 如何實(shí)現(xiàn)動(dòng)態(tài)申請(qǐng)權(quán)限
OverView
今天在復(fù)習(xí)的時(shí)候,突然復(fù)習(xí)到我們的相機(jī)操作,但是對(duì)于相機(jī)操作,對(duì)于我來(lái)說(shuō)比較復(fù)雜的是對(duì)于權(quán)限的操作。所有我們需要對(duì)我們的相機(jī)操作進(jìn)行一些筆記的整理,加深記憶。
開(kāi)發(fā)環(huán)境
Android Studio 3.6
Android 11(R)
該筆記使用 java
權(quán)限申請(qǐng)的基礎(chǔ)知識(shí)
學(xué)習(xí)自:GOOGLE ANDROID DEVELOPERS
對(duì)于我們所需要申請(qǐng)的權(quán)限我們需要進(jìn)行如下的操作。
我們需要將所有需要申請(qǐng)的權(quán)限添加到App/src/main/AndroidManifest.xml文件中。
但是權(quán)限也是分為常規(guī)的權(quán)限和危險(xiǎn)的權(quán)限的,對(duì)于常規(guī)的權(quán)限我們的只需要在AndroidManifest.xml文件中添加就可以使用了,但是對(duì)于一些被視為危險(xiǎn)權(quán)限的,我們就需要讓用戶來(lái)選擇時(shí)候同意申請(qǐng)。
接下來(lái)我們就看一下如何操作我們的危險(xiǎn)權(quán)限吧。
如何判斷是否申請(qǐng)了權(quán)限
按照國(guó)際慣例我們先看一下源代碼:
private boolean checkPermission() { //first we need check this Drive has? CAMERA Permission if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, CHECK_PERMISSION_CAMERA); return false; } else return true;}
這里我們使用我們的相機(jī)權(quán)限作為實(shí)例。
首先我們需要判斷我們的使用有相機(jī)權(quán)限,可以使用,申請(qǐng)完成后我們需要進(jìn)行權(quán)限申請(qǐng)。我們將我們所需要的權(quán)限申請(qǐng),并且傳入我們的指定代碼。這里我的CHECK_PERMISSION_CAMERA的值為1。
然后就是我們需要重寫(xiě)我們的系統(tǒng)方法onRequestPermissionsResult
這個(gè)方法可以很好的來(lái)判斷用戶時(shí)候同意了我們的權(quán)限申請(qǐng)。
首先來(lái)看看我們的源代碼:
@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case CHECK_PERMISSION_CAMERA: { if (grantResults.length > 0 && permissions[0].equals(PackageManager.PERMISSION_GRANTED)) {Toast.makeText(this, 'The camera permission application wes successful!', Toast.LENGTH_SHORT).show();dispatchTakePictureIntent(); } else {Toast.makeText(this, 'The camera permission application wes failed!', Toast.LENGTH_SHORT).show(); } } break; }}
這個(gè)就是我判斷用戶時(shí)候同意我們申請(qǐng)相機(jī)權(quán)限的全部代碼了。
這個(gè)也是非常的簡(jiǎn)單,我們通過(guò)在申請(qǐng)的時(shí)候傳入的識(shí)別代碼來(lái)判斷,如果代碼通過(guò)后我們需要通過(guò)驗(yàn)證grantResults的長(zhǎng)度和權(quán)限數(shù)組中的索引位置來(lái)判斷用戶有沒(méi)有同意我們的權(quán)限申請(qǐng)。如果同意了我們就可以進(jìn)行下一步操作。
這部分代碼還是非常的簡(jiǎn)單的。關(guān)于動(dòng)態(tài)權(quán)限的申請(qǐng)還是非常的簡(jiǎn)單的。
以上這篇Android 如何實(shí)現(xiàn)動(dòng)態(tài)申請(qǐng)權(quán)限就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 利用ajax+php實(shí)現(xiàn)商品價(jià)格計(jì)算2. 詳解idea中web.xml默認(rèn)版本問(wèn)題解決3. JSP頁(yè)面實(shí)現(xiàn)驗(yàn)證碼校驗(yàn)功能4. jsp實(shí)現(xiàn)textarea中的文字保存換行空格存到數(shù)據(jù)庫(kù)的方法5. jsp EL表達(dá)式詳解6. asp知識(shí)整理筆記4(問(wèn)答模式)7. ASP實(shí)現(xiàn)加法驗(yàn)證碼8. python selenium 獲取接口數(shù)據(jù)的實(shí)現(xiàn)9. java 優(yōu)雅關(guān)閉線程池的方案10. Python matplotlib 繪制雙Y軸曲線圖的示例代碼
